通过Java解析JSON - 具有key->值格式的数组

时间:2011-11-11 10:31:10

标签: java json parsing gson

我使用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 down'工作。 你有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

更改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