2017-02-06 5 views
0

Java HTTPポストで次のjsonオブジェクトからデータを読み取ろうとしています。私はまずそれを文字列に変換してからjsonオブジェクトにデータを読み込みます。私は、コードを実行すると、私は次の例外2D JSONオブジェクトからデータを読み取る

org.json.JSONException: JSONArray[0] is not a JSONArray. 

私はSender IDの&テキストフィールドにアクセスしようとしているを取得しておく

// Read from request 
StringBuilder buffer = new StringBuilder(); 
BufferedReader reader = request.getReader(); 
String line; 
while ((line = reader.readLine()) != null) { 
    buffer.append(line); 
} 

String data = buffer.toString(); 
JSONObject row = new JSONObject(data); 

JSONArray rows = row.getJSONArray("entry"); 
JSONArray first = rows.getJSONArray(0); 
System.out.println("first array is "+first); 

{ 
    "entry": [ 
     { 
      "id": "1306487646057992", 
      "messaging": [ 
       { 
        "message": { 
         "mid": "mid.1486361982003:2ed6c8ae51", 
         "seq": 12412, 
         "text": "hi there 8" 
        }, 
        "recipient": { 
         "id": "1306487646057992" 
        }, 
        "sender": { 
         "id": "1374961642574944" 
        }, 
        "timestamp": 1486361982003 
       } 
      ], 
      "time": 1486361982072 
     } 
    ], 
    "object": "page" 
} 

Javaコード .. 「こんにちは8」私はどこが間違っているのかわからない。助けてください。

答えて

1

entryJSONArrayですが、この配列内の最初のエンティティはJSONObjectではありません。これはエラーが発生している可能性があります。JSONObjectです。エラーとして

org.json.JSONException: JSONArray[0] is not a JSONArray

JSONArray[0]が実際にJSONObjectJSONObjectではないと言います。線の上

JSONArray first = rows.getJSONArray(0); 

返されるオブジェクトはJSONObjectJSONArrayではないため、エラーの原因となっています。だから、

あなたのソリューションをしようとしました
JSONObject messageObject = rows.getJSONObject(0).getJSONArray("messaging").getJSONObject(0); 
String text = messageObject.getJSONObject("message").getString("text"); 
String senderid = messageObject.getJSONObject("sender").getString("id"); 
+0

をアクセスmessage textにさらに

JSONObject first = rows.getJSONObject(0); 

にそれを変更し、sender idあなたは以下のことができます...私はエラーを取得しています「JSONArrayは、[0]の文字列ではありません"... – Lucy

+0

@Lucy今すぐ試してみてください。{entry in:{{id}、これでうまくいくでしょう。 'rows'は' String'の代わりに 'JSONObject'を含んでいます。 –

+0

もし私が働くと思うあなたのために働くかどうか教えてください。 –

関連する問題