如何计算用户从json输出发送的消息数

时间:2017-02-07 20:01:22

标签: python json

下面是我用户发送的消息的示例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
  }
  }]

1 个答案:

答案 0 :(得分:-1)

  1. 您的JSON无效。结束"在第27行," imageUrl":"例如,
  2. 将您的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());
    
            }
        }
    }