2017-08-07 19 views
1

考慮下面的JSON我想通過家長的id領域得到父元素的ID等於文本比較次要子元素:JSONPath一個子兒值

{ 
    "datapoints": [{ 
      "id": "default.1", 
      "definedBy": "default/0.1", 
      "featureValues": { 
       "bui.displayname": "Health status", 
       "bui.visibility": "normal", 
       "default.access": "r", 
       "default.basetype": "text", 
       "default.description": "Aggregated health status", 
       "default.format": "text/plain", 
       "default.name": "health_status", 
       "default.restriction": "re:(OK|WARN|ERROR|UNKNOWN)" 
      } 
     }, { 
      "id": "kdl.240", 
      "definedBy": "kdl/0.9", 
      "featureValues": { 
       "bui.displayname": "Delta K", 
       "bui.visibility": "normal", 
       "default.access": "rw", 
       "default.basetype": "real", 
       "default.description": "Delta K", 
       "default.name": "Delta_K", 
       "default.privacy": "false", 
       "default.restriction": "b32" 
      } 
     } 
    ] 
} 

我的第一個目標是獲得一個子兒的文本正確的數據點比較喜歡:

$['datapoints'][*]['featureValues'][?(@['default.name']=='Delta_K')]

這似乎不是我測試它http://jsonpath.com/ 要獲得所有我用這個successf數據點工作ully:

$['datapoints'][*]['featureValues']['default.name']

我的目標是與featureValues子元素來獲取數據點的id價值default.name等於Delta_K。在這個例子中,這將是kdl.240

回答

1

我只能用解決我的問題的第一部分:

$['datapoints'][*][?(@['default.name']=='SpDeltaT_K_Write')] 

在我的研究,我發現,jsonpath不支持得到過濾節點的父節點。在第7章「結論」的http://www.baeldung.com/guide-to-jayway-jsonpath它寫成:

雖然JsonPath有一些缺點,如達到或同級節點缺乏運營商的,它可以在很多情況下是非常有用的。

此外SO帖子不能幫助我。