2011-11-11 115 views
2

我在使用gson(JSon来自Google的Java库)时遇到问题。通过Java解析JSON - 使用key-> value格式的数组

我已经解析这样的结果:

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的工作。 你有什么建议吗?

谢谢!

回答

2

它可能不承认01boolean值。尝试将SubArray的那些成员改为int,或者按照此处所述编写您自己的解串器:GSON False uppercase

+0

已经尝试过,但它down't工作也与整型.. – Andrea

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