下面是我用户发送的消息的示例JSON输出。我想要计算每个用户发送的消息数量。问题是每个对象都以唯一的字符串开头。 (即第一个对象以'-KWvQJDwln4eECyxtnF _'开头)
我正在寻找的最终结果是: user_id:用户发送的消息数
我希望有一个包含密钥和user_id的名称值对
示例:
-KWvQJDwln4eECyxtnF_ : 10 //10 is from user_id
[ null, {
"-KWvQJDwln4eECyxtnF_" : {
"blocked" : false,
"consumedByPartner" : false,
"dpid" : "example",
"groupId" : 0,
"id" : "-KWvQJDwln4eECyxtnF_",
"likes" : 61,
"messageType" : 0,
"name" : "jon",
"possibleAdultImage" : false,
"possibleViolentImage" : false,
"text" : "first message",
"time" : 1479539507645,
"userid" : 10
},
"-KWvQk3XmYa-nwQ54g6x" : {
"blocked" : false,
"consumedByPartner" : false,
"dpid" : "example",
"groupId" : 0,
"id" : "-KWvQk3XmYa-nwQ54g6x",
"imageUrl" : "example",
"likes" : 60,
"messageType" : 0,
"name" : "jondotli",
"possibleAdultImage" : false,
"possibleViolentImage" : false,
"text" : "",
"time" : 1479539621666,
"userid" : 8
},
"-KWvR6v45NvpO-kIhAne" : {
"blocked" : false,
"consumedByPartner" : true,
"dpid" : "example",
"groupId" : 0,
"id" : "-KWvR6v45NvpO-kIhAne",
"imageUrl" : "example",
"likes" : 126,
"messageType" : 1,
"name" : "jondotli",
"possibleAdultImage" : false,
"possibleViolentImage" : false,
"text" : "",
"time" : 1479539719365,
"userid" : 8
}
}]
答案 0 :(得分:-1)
将您的JSON保存为JSON数组,或者如果它是一个字符串,请将其转换为jsonarray。在这里,我已经使用了字符串fullline,其中存储了您的JSON。获取用户ID的解决方案是
JSONArray rootObject = new JSONArray(fullline);
for (int i = 0; i < rootObject.length(); i++) {
if (rootObject.get(i) instanceof JSONObject) {
JSONObject elements = rootObject.getJSONObject(i);
Set<String> keys = elements.keySet();
for (String k : keys) {
JSONObject keyRow = elements.getJSONObject(k);
Object userid = keyRow.get("userid");
System.out.println(userid.toString());
}
}
}