2017-09-15 29 views
0

使用Java JSON路徑庫:https://github.com/json-path/JsonPath返回的Java JsonPath作爲一個JSON字符串

給出一個JSON這樣

{ 
    "store": { 
     "book": [ 
      { 
       "category": "reference" 
      }, 
      { 
       "category": "fiction" 
      } 
     ], 
     "bicycle": { 
      "color": "red", 
      "price": 19.95 
     } 
    }, 
    "expensive": 10 
} 

我想返回「書」作爲一個字符串列表。對於例子:

List<String> results = JsonPath.read(example, "$.store.book[*]"); 

和結果應該是這樣的:

["{\"category\":\"reference\"}", "{\"category\":\"fiction\"}"] 

有沒有辦法來實現這一目標?

目前:

System.out.println(udf.jsonExtractScalar(testExample, "$.store.book[*]").getClass().getName()); 
--> net.minidev.json.JSONArray 
+1

有什麼問題的課嗎? 'JSONArray'是'List'的一個子類型,在這種情況下恰好包含了Strings。 –

+0

由於book是JSON樹中的JsonArray,因此您可以JsonArray tupe並從中檢索數據並將其添加到列表中。 –

回答

0

由於本書是JsonArray你JSON樹,你可以使用JsonArray類型,並從中獲取數據,並添加到列表中。

這裏是一個例子。

JSONArray jsonArray = new JSONArray(jsonArrayString); 
List<String> list = new ArrayList<String>(); 
for (int i=0; i<jsonArray.length(); i++) { 
list.add(jsonArray.getString(i)); 

用jsondata的書籍數組名稱替換jsonArrayString,你將會很好。

使用將JSONArray類,這是

`org.json.JSONArray` 
+0

哪個'JSONArray'類是那個? –

+0

這將是android自己的類。 –

+0

請在你的答案中加上這個,並解釋他們爲什麼應該用它們來代替他們已經有的東西,比如說。 Jayway的'JsonPath'和'net.minidev.json.JSONArray'。 –

相關問題