Java 从2D JSON对象读取数据

Java 从2D JSON对象读取数据,java,arrays,json,Java,Arrays,Json,我试图从JavaHTTPPOST中的以下json对象读取数据。我首先将其转换为字符串,然后转换为json对象来读取数据 { "entry": [ { "id": "1306487646057992", "messaging": [ { "message": { "mid": "mid.14863619820

我试图从JavaHTTPPOST中的以下json对象读取数据。我首先将其转换为字符串,然后转换为json对象来读取数据

{
    "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代码

// 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);
当我运行代码时,我不断得到以下异常

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

我正在尝试访问发件人id和文本字段“hi there 8”无法理解我的错误所在。请帮助..

,因为您可以从您提供的JSON中清楚地看到,
条目是
JSONArray
,但此数组中的第一个实体不是
JSONObject
,这是一个简单的
JSONObject
bea,因为您得到了错误

正如错误所说,
org.json.JSONException:JSONArray[0]不是一个JSONArray

JSONArray[0]
不是
JSONObject
它实际上是一个
JSONObject

JSONArray first = rows.getJSONArray(0);
由于返回的对象是
JSONObject
而不是
JSONArray
,所以上面的行导致了错误。那么换成,

JSONObject first = rows.getJSONObject(0);
要进一步访问
消息文本
发件人id
,您可以执行以下操作:

JSONObject messageObject =  rows.getJSONObject(0).getJSONArray("messaging").getJSONObject(0);
String text = messageObject.getJSONObject("message").getString("text");
String senderid = messageObject.getJSONObject("sender").getString("id");

@Lucy try now我错过了
条目中的
{
:[{id
,现在它可以正常工作。
包含一个
JSONObject
而不是
String
。让我知道它是否适合您,我认为它可以工作。是的,它可以工作…但是我如何进一步访问sender.id和message.text???@Lucy您可以看到查询的答案,但您应该按照下面的说明操作