【问题标题】:How to read JSON in Java?如何在 Java 中读取 JSON?
【发布时间】:2015-03-16 06:32:28
【问题描述】:

我有一个 JSON 字符串,我将 data 元素的数据发送到 JSONObject。在我读完这个之后,结果字符串如下。我正在使用 org.json 库。

String dataStr = "[{\"name\":\"jhonny\",\"counts\":[\"50\",\"44\",\"46\"],\"url\":\"google\"},
 {\"name\":\"john\",\"counts\":[\"344\",\"4\",\"18\"],\"url\":\"yahoo\"}]";

我尝试读取每个元素,如下所示,

String dataStr = report.get("data").toString();
JSONObject data = new JSONObject(dataStr.substring(1));
System.out.println(data);

但我的输出是,

{"name":"jhonny","counts":["50","44","46"],"url":"google"}

输出仅包含一个元素。我该如何解决这个问题?

【问题讨论】:

  • 什么是 JSONObject?它来自哪个图书馆? (问题是“如何使用 库名称 读取 JSON”而不是“如何在 Java 中读取 JSON”)
  • (另外,你知道整个字符串是一个 JSON 数组吗?)
  • 更多细节会有所帮助。例如dataStr 的值是多少?

标签: java json string


【解决方案1】:
JSONArray jsonarray = new JSONArray(datastr);
for(int i=0; i<jsonarray.length(); i++){
    JSONObject data= jsonarray.getJSONObject(i);

    System.out.println(data);
}   

【讨论】:

    【解决方案2】:

    使用org.json 库:

    JSONObject obj = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}");
    
    List<String> list = new ArrayList<String>();
    JSONArray array = obj.getJSONArray("interests");
    for(int i = 0 ; i < array.length() ; i++){
        list.add(array.getJSONObject(i).getString("interestKey"));
    }
    

    【讨论】:

      【解决方案3】:

      问题是您试图将 JSONArray 读取为 JSONObject。

      要解析 JSONArray,您需要执行以下操作:(不确定您使用的是哪个库)

      for (int i = 0; i < jsonarray.length(); i++) {
          JSONObject jsonobject = jsonarray.getJSONObject(i);
          // jsonobject holds the desired element.
      }
      

      【讨论】:

        【解决方案4】:

        如果您分析您的 json 字符串,您会注意到您的 json 字符串包含多个没有外部对象的 json 对象,例如:-

        { 
        "outer":{
                  {\"name\":\"jhonny\",\"counts\":[\"50\",\"44\",\"46\"],\"url\":\"google\"},
                  {\"name\":\"jhonny\",\"counts\":[\"50\",\"44\",\"46\"],\"url\":\"google\"}
                }
        }
        

        您解析的方式需要这种 json 结构。您的 json 字符串实际上只是一个 jsonarray。所以就这样吧:

        JSONArray jsonarray = new JSONArray(datastr);
        for(int i=0; i<jsonarray.length(); i++){
            JSONObject data= jsonarray.getJSONObject(i);
        }
        

        有关更多信息,您可以访问此链接,该链接为您提供了对how to read json in java 的良好解释

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-19
          • 1970-01-01
          • 2012-05-11
          • 2016-02-02
          • 2016-10-15
          • 1970-01-01
          相关资源
          最近更新 更多