我需要能够快速辨别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进行此检查,我会更喜欢,除非有人能告诉我更好的方法。
答案 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
答案 2 :(得分:0)
尝试
var a = {} // required json.
var regex = /\[(.*)\]/
regex.test(a)
答案 3 :(得分:0)
在查看答案后,我已经重新考虑了,我将继续解析和遍历以找到问题的答案。
Regexing结果证明是不可靠的,其他选项只会增加更多的卷积。
感谢大家的答案!