2011-11-11 37 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