簡體   English   中英

從Java中的JSON對象中的數組獲取價值?

[英]Getting value from an array in a JSON Object in Java?

我對Java中的REST API調用是相當陌生的,並且目前在嘗試從JSON對象(如下)獲取“ item”部分時遇到問題。 我猜這也使我感到困惑,“響應”也是數組中的一個對象?/

JSON文件如下:

{
"version": "1.0",
"code": 200,
"request":{"text":["seafood" ], "lang": "en", "type": "stimulus"},
"response":[{
    "text": "seafood",
    "items":[
         {"item": "Shrimp", "weight": 100, "pos": "noun" }, 
         {"item": "Lobster",…
     ]
}]
}

我目前設法使用以下方法獲取對象的“響應”部分:

BufferedReader in = new BufferedReader( 
    new InputStreamReader(conection.getInputStream()));
StringBuffer json = new StringBuffer();
while ((readLine = in.readLine()) != null) {
    json.append(readLine);
} 
in.close();
JSONParser parser = new JSONParser();
try{
    JSONObject object= (JSONObject) parser.parse(json.toString());
    Object response = json.get("response");
...

到目前為止,我陷入困境。 我不知道該如何處理“響應”以獲取“項目”,如果我嘗試將“響應”轉換為JSONObject,它將返回為null?

我想嘗試做的是將“項目”部分中的每個“項目”都放入列表中。

幫助將不勝感激!

我認為應該可以:

JSONParser parser = new JSONParser();
try{
    JSONObject object= (JSONObject) parser.parse(json.toString());
    JSONArray response = object.getJSONArray("response");
    JSONObject responseObject = response.getJSONObject(0);
    JSONArray expectedArray = responseObject.getJSONArray("items");
    for (int i = 0; i < expectedArray.length(); i++) {
        String item = expectedArray.getJSONObject(i).getString("item");
        String weight = expectedArray.getJSONObject(i).getInt("weight");
        ......
        //Here you can create your custom object and add to your array. For example
        list.add(new MyOwnObject(item, weight));
    }
....

因為響應是數組,而不是對象

您應該檢查JSONObject的文檔 它描述了所有可用的方法。 請注意,沒有名為get()方法。 相反,您可能想使用getJSONArray()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM