使用jsonpath查询根元素的直接子元素

使用jsonpath查询根元素的直接子元素,json,jsonpath,Json,Jsonpath,我在使用jsonpath匹配根元素的直接子元素时遇到问题。拥有这样的数据: {"name": "lorem", "age": 15} 如何检查此json是否有值为“lorem”的字段“name”?。我试过这样的方法: $[?(@.name == "lorem")] 但它返回一个空数组,因为(我猜)它搜索结构中更深的字段“name”。所以我试着: $[?(@ == "lorem")] 但它也不起作用(语法不正确) 然而,当查询字段在json结构中“更深”时,它可以工作。使用此json数据:

我在使用jsonpath匹配根元素的直接子元素时遇到问题。拥有这样的数据:

{"name": "lorem", "age": 15}
如何检查此json是否有值为“lorem”的字段“name”?。我试过这样的方法:

$[?(@.name == "lorem")]
但它返回一个空数组,因为(我猜)它搜索结构中更深的字段“name”。所以我试着:

$[?(@ == "lorem")]
但它也不起作用(语法不正确)

然而,当查询字段在json结构中“更深”时,它可以工作。使用此json数据:

{"name": {"realName": "lorem"}, "age": 15}
此查询按预期工作,返回非空结果:

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

似乎不可能对根元素的直接子元素字段执行类似的查询。我说的对吗?

指出您使用的语言和实现很重要。JSONPath是一个有用的开始,但不正式且没有具体说明

使用,可以使用
@
检查根目录下的值,但如果要确保使用的属性正确,还需要使用其自定义
@属性
值:

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