2011-11-11 14 views
2

gson(GoogleのJSon Javaライブラリ)を使用して問題が発生しました。JavaからJSONをパース - キー値形式の配列

私はこのような結果に解析するためにきました:私はこのクラスを書いた

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要求されたWebページのバッファを含むバッファされたリーダーです。 key_1とkey_2の解析はうまく動作しますが、key_3の動作を解析します。 提案がありますか?

ありがとうございます!

答えて

2

おそらく01booleanと認識しません。代わりにintするSubArrayのメンバーを変更してみてください、さもなければ、ここで説明するように、独自のデシリアライザを書く: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 
関連する問題