Java 从2D JSON对象读取数据
我试图从JavaHTTPPOST中的以下json对象读取数据。我首先将其转换为字符串,然后转换为json对象来读取数据Java 从2D JSON对象读取数据,java,arrays,json,Java,Arrays,Json,我试图从JavaHTTPPOST中的以下json对象读取数据。我首先将其转换为字符串,然后转换为json对象来读取数据 { "entry": [ { "id": "1306487646057992", "messaging": [ { "message": { "mid": "mid.14863619820
{
"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您可以看到查询的答案,但您应该按照下面的说明操作