簡體   English   中英

如何使用Java代碼從具有嵌套數據的Json數組中獲取值

[英]How to fetch the value from Json array having nested data using Java code

我必須從具有嵌套數據的數組“ machines”中獲取值,並且需要獲取“ value1”:“需要獲取此值”。 嘗試了很多代碼,但仍然無法獲取相同的代碼。

{
   "name":"anyname",
   "machines":[
      {
         "id":"771760",
         "type":"general",
         "properties":{
            "value1":"1",
            "value2":"2"
         }
      },
      {
         "id":"341256",
         "type":"general",
         "properties":{
            "value1":"Need to fetch this value"
         }
      },
      {
         "id":"341256",
         "type":"general",
         "properties":{
            "value1":"1",
            "value2":"2"
         }
      }
   ]
}

使用JsonObject和JsonArray嘗試過,仍然無法正常工作

public String getValueForAnyKeyHavingNestedObjects(String jsonData,String outerObjectKey, String keyWhoseValueToFetch) throws JSONException {

JSONObject obj = new JSONObject(jsonData);

String value = String.valueOf(obj.getJSONObject(outerObjectKey).get(keyWhoseValueToFetch));
return value;
}

因此,您需要將JSONData放入JSONObject

您需要提取機器,這是使用getJSONArray("machines")的數組。

之后,您要遍歷每台machine並將該machine轉換為另一個JSONObject

為了獲取value1,您只需執行常規的get("value1")

完整示例如下:

public static void main(String[] args) {
        String jsonData = "{\n"
                + "   \"name\":\"anyname\",\n"
                + "   \"machines\":[\n"
                + "      {\n"
                + "         \"id\":\"771760\",\n"
                + "         \"type\":\"general\",\n"
                + "         \"properties\":{\n"
                + "            \"value1\":\"1\",\n"
                + "            \"value2\":\"2\"\n"
                + "         }\n"
                + "      },\n"
                + "      {\n"
                + "         \"id\":\"341256\",\n"
                + "         \"type\":\"general\",\n"
                + "         \"properties\":{\n"
                + "            \"value1\":\"Need to fetch this value\"\n"
                + "         }\n"
                + "      },\n"
                + "      {\n"
                + "         \"id\":\"341256\",\n"
                + "         \"type\":\"general\",\n"
                + "         \"properties\":{\n"
                + "            \"value1\":\"1\",\n"
                + "            \"value2\":\"2\"\n"
                + "         }\n"
                + "      }\n"
                + "   ]\n"
                + "}";

        final JSONObject jsonObject = new JSONObject(jsonData);
        final JSONArray machines = jsonObject.getJSONArray("machines");
        for (int i = 0; i < machines.length(); i++) {
            final JSONObject machine = machines.getJSONObject(i);
            final JSONObject properties = machine.getJSONObject("properties");
            System.out.println(properties.get("value1"));
        }
    }

結果:

1個

需要獲取此值

1個

暫無
暫無

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

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