2017-09-26 159 views
2

我在JSONArray中有一个JSONArray,我想以这种方式应用JSONPath表达式,这样我得到JSONObject或JSONArray作为结果,当一个条件被satsified在内部的JSONArray上。json-path:筛选另一个数组中的数组的子节点

如:

{ 
    "A": [ 
    { 
     "B": [ 
     { 
      "id": 1 
     }, 
     { 
      "id": 2 
     }, 
     { 
      "id": 3 
     } 
     ], 
     "C": { 
     "id": 10, 
     "name": "PQR" 
     }, 
     "id": 25, 
     "name": "XYZ" 
    }, 
    { 
     "B": [ 
     { 
      "id": 4 
     }, 
     { 
      "id": 5 
     }, 
     { 
      "id": 6 
     } 
     ], 
     "C": { 
     "id": 15, 
     "name": "PQR" 
     }, 
     "id": 20, 
     "name": "XYZ" 
    } 
    ] 
} 

,如果我想在那里C.id = 10,我会用的所有元素:$.A[?(@.C.id == 10)]

现在,什么样的断言是被用来获取内的所有对象,其中B.id = 1 ?注意:B是JSON对象的数组。

回答

0

我有成功与$.A[?(@.B[?(@.id == 1)])]

但只使用Scala的加特林实现时: http://jsonpath.herokuapp.com/

的Jayway实施似乎完全忽视了内部过滤器,并根据他们的GitHub的issue,这是一个错误。

+0

你是对的,加特林它确实为我工作。但是我正在使用Jayway库,你确定它有一个限制吗? –

+0

@VishalMahuli更新了答案,它看起来像一个错误。 –

相关问题