这是我的JSON:
{
"status": false,
"responseData": [{
"data": {
"value": "value",
"label": "label"
},
"type": "HEADING"
}, {
"data": {
"section": "SECTION1",
"post": {}
},
"type": "POST"
}, {
"data": {
"section": "SECTION1",
"post": {}
},
"type": "POST"
}, {
"data": {
"section": "SECTION1",
"post": {}
},
"type": "POST"
}, {
"data": {
"section": "SECTION1",
"value": "value",
"label": "label",
"type": "POSTS_LIST",
"headerDetails": {
"value": "value",
"label": "label"
},
"metaData": {
"params": {
"param1": "value1",
"param2": "value2"
}
}
},
"type": "CALL_TO_ACTION"
}],
"message": "OK"
}
我使用Jayway JsonPath进行数据提取。
问题:我想根据部分名称(例如type
)获取所有CALL_TO_ACTION
值(例如SECTION1
)。
我在https://jsonpath.curiousconcept.com尝试了什么:$.responseData[*].[?(@.section=='SECTION1')].type
,但这给了我POSTS_LIST
(显然!),这是内部type
而不是外部{{1}我正在寻找属性。
答案 0 :(得分:0)
您希望过滤子级属性,然后返回父级属性。
更具体地说,在以下示例中......
{
"data": {
"section": "SECTION1",
"value": "value",
"label": "label",
"type": "POSTS_LIST",
"headerDetails": {
"value": "value",
"label": "label"
},
"metaData": {
"params": {
"param1": "value1",
"param2": "value2"
}
}
},
"type": "CALL_TO_ACTION"
}
...子级属性为"section": "SECTION1"
,父级属性为"type": "CALL_TO_ACTION"
。
JayWay JsonPath目前支持不,但有一个open issue与之相关。你或许可以提出问题和/或考虑为它提出公关。
或者,您必须使用JSON反序列化器(例如@Wayne建议的Gson)将您的JSON反序列化为Map(或类似)构造,然后您可以过滤并找到您的匹配步骤返回树找到你想要检索的数据。