2017-05-23 17 views
0

私はjavaのjsonパーサーをやっています。私は、文字列としてJSONを受けた後、私はここですべてのキー値にjava JsonObjectを解析中にエラーが発生する

を取得しようと私のJSON文字列は

{ "Message":{"field": [ {"bit":2,"name":"AAA"}, {"bit":3,"name":"BBB"}]}} 

されており、ここで私のパーサーです:

   JSONObject jObject = new JSONObject(result); //result contains the json     
       JSONArray info = jObject.getJSONArray("field"); 
       for (int i = 0 ; i < info.length(); i++) { 
        JSONObject obj = info.getJSONObject(i); 
        Iterator<String> keys = obj.keys(); 
        while (keys.hasNext()) { //I use key - value cause the json can change 
         String key = keys.next(); 
         System.out.println("Key: " + key + "\tValue: " + obj.get(key)); 
        } 
       } 

しかし、毎回そのI私が得るコードを実行します。

Error parsing json org.json.JSONException: JSONObject["field"] not found. 

そして、私はそのフィールドをJsonArrayと推測します...私は間違っていますか?

はあなたがあまりにも深くあなた jObjectから fieldを取得したい1つのレベルです

答えて

2

お時間をいただき、ありがとうございます。 あなたは何をする必要があります:あなたはJSONArrayfieldから取得取得する必要があります

JSONObject jObject = new JSONObject(result); 
JSONObject jMsg = jObject.getJSONObject("Message");    
JSONArray info = jMsg.getJSONArray("field"); 
2

JSONObjctMessage

String result = "{ \"Message\":{\"field\": [ {\"bit\":2,\"name\":\"AAA\"}, {\"bit\":3,\"name\":\"BBB\"}]}}"; 
JSONObject jObject = new JSONObject(result).getJSONObject("Message"); //result contains the json 
JSONArray info = jObject.getJSONArray("field"); 
for (int i = 0 ; i < info.length(); i++) { 
    JSONObject obj = info.getJSONObject(i); 
    Iterator<String> keys = obj.keys(); 
    while (keys.hasNext()) { //I use key - value cause the json can change 
     String key = keys.next(); 
     System.out.println("Key: " + key + "\tValue: " + obj.get(key)); 
    } 
} 

出力:

Key: name Value: AAA 
Key: bit Value: 2 
Key: name Value: BBB 
Key: bit Value: 3 
0

これを試してみてください。

 String result = "{ \"Message\":{\"field\": [ {\"bit\":2,\"name\":\"AAA\"}, {\"bit\":3,\"name\":\"BBB\"}]}}"; 

    JSONObject jObject = new JSONObject(result); //result contains the json 
    JSONArray info = jObject.getJSONObject("Message").getJSONArray("field"); 
    for (int i = 0 ; i < info.length(); i++) { 
     JSONObject obj = info.getJSONObject(i); 
     Iterator<String> keys = obj.keys(); 
     while (keys.hasNext()) { //I use key - value cause the json can change 
      String key = keys.next(); 
      System.out.println("Key: " + key + "\tValue: " + obj.get(key)); 
     } 
    } 
関連する問題