我使用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'工作。 你有什么建议吗?
谢谢!
答案 0 :(得分:2)
它可能无法将0
和1
识别为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