2016-04-25 75 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/

相關問題