2013-10-01 109 views
1

這是Json文件。如何從jsonarray讀取值?

{ 
    "paging": { 
    "next_offset": 100, 
    "total": 247, 
    "limit": 100 
    }, 
    "body_stats": [ 
    { 
     "weight": 208.0, 
     "id": "13500547638911", 
     "date": "2012-10-  12T15:12:50Z", 
     "user_id": "13499829320503", 
     "bmr": 2723.328, 
     "bmi": 28.20679
    }, 
    { 
     "resting_heart_rate": 65.0, 
     "weight": 135.0, 
     "id": "1b5kegg00  00js2p5pfmg000000", 
     "date": "2013-04-  15T00:44:12Z", 
     "user_id": "13589643116210", 
     "girths": { 
     "abdomen": 30.0, 
     "waist": 30.0 
     } 
    } 
    ] 
} 

我想從這個JSON讀取數值,

try{ 
     Object obj = parser.parse(new FileReader("D:/jdemo.json")); 
     JSONObject jsonObject = (JSONObject) obj; 
     JSONArray companyList = (JSONArray)jsonObject.get("body_stats"); 
     Iterator<Object> iterator = companyList.iterator(); 
     while (iterator.hasNext()) { 
      System.out.println(iterator.next()); 
     } 
} 

輸出:

{ 
    "id": "13500547638911", 
    "bmr": 2723.328, 
    "weight": 208.0, 
    "bmi": 28.20679, 
    "user_id": "13499829320503", 
    "date": "2012-10-12T15:12:50Z" 
}, 
{ 
    "id": "1b5kegg0000js2p5pfmg000000", 
    "weight": 135.0, 
    "girths": { 
    "abdomen": 30.0, 
    "waist": 30.0 
    }, 
    "user_id": "13589643116210", 
    "date": "2013-04-15T00:44:12Z", 
    "resting_heart_rate": 65.0 
} 

不過我想讀"girths"{" ",""}從這個我怎麼能讀girths{}價值?

+0

我看到它正在打印第二張唱片的'girths'。你的意思是你想要爲第一張唱片強制插入一個空的'girths'字段嗎? –

+0

@HariShankar -----實際上我不想從第二個記錄中讀出這個圓圈{「」,「」},並且再次從文件的下一個位置讀取它。 – user2598718

+0

您讀取數組中的數據。現在您需要訪問數組元素中的數據,它們是JSON「對象」。而「周長」是陣列內部(一些)對象中的另一個「對象」。參見json.org - 閱讀和理解。 –

回答

0

"girths"應該是另一個JSONObject,所以我想

.getJSONObject(2).get("girths"); 

JSONArray

0
try{ 
     Object obj = parser.parse(new FileReader("D:/jdemo.json")); 
     JSONObject jsonObject = (JSONObject) obj; 
     JSONArray companyList = (JSONArray)jsonObject.get("body_stats"); 
     Iterator<JSONObject> iterator = companyList.iterator(); 
     while (iterator.hasNext()) { 
       JSONObject jsonObject = iterator.next(); 
       Object object = jsonObject.get("girths"); 
       if(object != null){ 
        JSONObject girths = (JSONObject)object ; 
        System.out.println(girths); 
       } 
     } 
} 
+0

@Prabhakaran ---------- than than its working。 – user2598718

+0

很高興聽到它......如果它幫助你,請接受答案.. – Prabhakaran

1

這是一種方法。

JsonElement jsonElement = new JsonParser().parse(new FileReader("D:/jdemo.json")); 
JsonObject jsonObject = jsonElement.getAsJsonObject(); 
JsonArray jsonArray = jsonObject.getAsJsonArray("body_stats"); 

for(JsonElement body_stats : jsonArray) { 
    JsonElement girths = body_stats.getAsJsonObject().get("girths"); 
    if(griths !=null) { 
      //The logic 
    } 
    }