【问题标题】:Parsing JSON via Java - Array with key->value format通过 Java 解析 JSON - 具有键->值格式的数组
【发布时间】:2011-11-11 10:31:10
【问题描述】:

我在使用 gson(来自 Google 的 JSon Java 库)时遇到问题。

我必须解析这样的结果:

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 28 Oct 2000 16:46:01 GMT
Content-Type: text/plain
Connection: keep-alive
Content-Length: 217

{
  "key_1":"value_1",
  "key_2":"value_2",
  "key_3": [
    {
      "key_3_1":"value_3_1",
      "key_3_2":0,
      "key_3_3":1
    }
  ]
}

我已经写了这门课:

import java.util.List;

public class ObjectClass {
    private String key_1;
    private String key_2;
    private List<SubArray> key_3;

    public static class SubArray {
        private String key_3_1;
        private boolean key_3_2;
        private boolean key_3_3;
    }

    public void printList() {
        System.out.println("Size: " + key_3.size());
    }
}

进入 MainClass 我有:

Gson gson = new Gson();
ObjectClass obj = gson.fromJson(br, ObjectClass.class);

其中 br 是一个缓冲阅读器,其中包含所请求网页的缓冲区。 key_1 和 key_2 的解析工作正常,但 key_3 的解析工作正常。 你有什么建议吗?

谢谢!

【问题讨论】:

    标签: java json parsing gson


    【解决方案1】:

    它可能无法将 01 识别为 boolean 值。尝试将SubArray 的那些成员改为int,或者按照此处所述编写自己的反序列化器:GSON False uppercase

    【讨论】:

      【解决方案2】:

      更改SubArray中的一些类型。

      public static class SubArray {
          private String key_3_1;
          private int key_3_2;
          private int key_3_3;
      }
      

      以下代码表明key_3被正确解析。

      public void printList() {
          System.out.println("Size: " + key_3.size());
          System.out.println("key_3_1: " + key_3.get(0).key_3_1);
          System.out.println("key_3_2: " + key_3.get(0).key_3_2);
          System.out.println("key_3_3: " + key_3.get(0).key_3_3);
      }
      

      结果是:

      Size: 1
      key_3_1: value_3_1
      key_3_2: 0
      key_3_3: 1
      

      【讨论】:

        猜你喜欢
        • 2020-04-28
        • 2014-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多