正则表达式检查JSON是否包含数组

时间:2014-03-31 10:32:31

标签: arrays regex json

我需要能够快速辨别JSON数据结构是否包含数组。例如,正则表达式应该返回true

{
  "array": [
    1,
    2,
    3
  ],
  "boolean": true,
  "null": null,
  "number": 123,
  "object": {
    "a": "b",
    "c": "d",
    "e": "f"
  },
  "string": "Hello World"
}

false

{
  "boolean": true,
  "null": null,
  "number": 123,
  "object": {
    "a": "b",
    "c": "d",
    "e": "f"
  },
  "string": "[Hello World]"
}

有什么想法吗?

如果可以通过正则表达式而不是遍历json进行此检查,我会更喜欢,除非有人能告诉我更好的方法。

4 个答案:

答案 0 :(得分:0)

您可以在某些"规范"上格式化JSON。使用像jshon这样的工具。

我不推荐这种做法。

$ cat foo.json 
{"root": { "foo": 1, "bar": [2,3,4], "baz":"BAZ", "qux":[5,6, [7,8, [9, 10]]]}}
$ jshon < foo.json
{
 "root": {
  "foo": 1,
  "bar": [
   2,
   3,
   4
  ],
  "baz": "BAZ",
  "qux": [
   5,
   6,
   [
    7,
    8,
    [
     9,
     10
    ]
   ]
  ]
 }
}
$ jshon < foo.json | grep '^\s*\]'
  ],
    ]
   ]
  ]
$ echo $?
0

答案 1 :(得分:0)

使用此正则表达式:

 /:?\s+\[/g

然后你可以做到:

var json = "json here";
var containsArray = json.match(/:?\s+\[/g) !== null; // returns true or false

演示:http://jsfiddle.net/pMMgb/1

答案 2 :(得分:0)

尝试

var a = {} // required json.
var regex = /\[(.*)\]/
regex.test(a) 

答案 3 :(得分:0)

在查看答案后,我已经重新考虑了,我将继续解析和遍历以找到问题的答案。

Regexing结果证明是不可靠的,其他选项只会增加更多的卷积。

感谢大家的答案!