我正在尝试从Java HTTP帖子中读取以下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”无法理解我哪里出错了......请帮助..
答案 0 :(得分:1)
正如您可以清楚地看到您所提供的JSON entry
是JSONArray
,但此数组中的第一个实体不是JSONObject
,因此JSONObject
很简单其中你得到了错误。
错误显示org.json.JSONException: JSONArray[0] is not a JSONArray
JSONArray[0]
JSONObject
实际上不是JSONObject
。
JSONArray first = rows.getJSONArray(0);
以上行导致错误,因为返回的对象为JSONObject
而不是JSONArray
。所以改成它,
JSONObject first = rows.getJSONObject(0);
进一步访问message text
和sender id
,您可以执行以下操作,
JSONObject messageObject = rows.getJSONObject(0).getJSONArray("messaging").getJSONObject(0);
String text = messageObject.getJSONObject("message").getString("text");
String senderid = messageObject.getJSONObject("sender").getString("id");