2016-04-25 102 views
0

我有一个使用jsonpath匹配根元素的直接子元素的问题。有这样一个数据:用jsonpath查询根元素的直接子元素

{"name": "lorem", "age": 15} 

如何检查,如果这JSON有一个字段“名”与价值“排版”?我想是这样的:

$[?(@.name == "lorem")] 

但它返回一个空数组,因为(我猜)是搜索领域的“名”的结构更深。所以,我想:

$[?(@ == "lorem")] 

但它没有也行(不正确的语法)

但是 - 它的工作原理,当查询的字段是JSON结构“更深”。有了这个JSON数据:

{"name": {"realName": "lorem"}, "age": 15} 

此查询工作正常,返回非空的结果:

$[?(@.realName == "lorem")] 

好像有没有可能对那些根的直接子字段执行类似查询元件。我对么?

回答

1

指出您使用的是什么语言和实现很重要。 JSONPath是一个有用的开始,但是非正式的和不明确的。

使用jsonpath-plus,你可以使用@检查从根本价值,但如果你想确保你在正确的属性,你还需要使用它的定制@property值:

var json = {"name": "lorem", "age": 15}; 
var path = '$[?(@property == "name" && @ == "lorem")]'; 
JSONPath({json: json, path: path, wrap: false}); 

https://jsfiddle.net/vq1dm792/

相关问题