2017-08-13 110 views
1

JSON containts節點我有Java應用程序,它可以獲取JSON字符串像這樣的檢查是否具有價值

{ 
    "name": "testName", 
    "message": [ 
     "TestMessage." 
    ] 
} 

我需要的是檢查是否存在具有的TestMessage的「價值「消息」數組節點。 「在它的任何元素。

我有權訪問我的代碼中的com.jway.jsonpath.JsonPath。但它看起來只能讀取特定節點的值。例如。這樣我就能獲取「消息」數組

JsonPath.read(content, "$.message[0]") 

的第一要素,但以這種方式,我將不得不獲取數組轉換成Java中的所有元素,並驗證它們在那裏。 相反,我想通過JsonPath引擎本身執行此檢查。

我該如何用JsonPath實現這個目標?使用其他庫更好嗎?

回答

2

您可以使用過濾器操作。

過濾器是用於過濾數組的邏輯表達式。一個典型的過濾器是[?(@。age> 18)],其中@表示當前正在處理的項目。使用邏輯運算符& &和||可以創建更復雜的過濾器。字符串文字必須用單引號或雙引號([?(@。color =='blue')]或[?(@。color ==「blue」)])括起來。

這樣的:

JsonPath.read(json, "$.message[?(@ == "TestMessage.")]"); 

更多可以參考的https://github.com/json-path/JsonPath

+0

的readme.MD謝謝你的答案。我可以看到它在這裏工作https://jsonpath.herokuapp.com/。但它不適用於我的應用程序和https://jsonpath.curiousconcept.com/。我使用的json-path的版本是2.0.0。你知道我是否應該使用任何特定的版本?或者什麼可能是它不工作的原因? – Bogdan

+0

好吧,我切換到最新的jway版本,它現在是2.4.0。非常感謝您的幫助! – Bogdan