[英]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.