2012-03-13 35 views
4

は、私のようなJSON文字列があるとしましょう:JSON配列とGSONを使用したサブ配列の解析

{"title":"aaa","url":"bbb","image":{"url":"ccc","width":"100","height":"200"}, ...

マイアクセサ:

import com.google.gson.annotations.SerializedName; 

public class accessorClass { 

    @SerializedName("title") 
    private String title; 

    @SerializedName("url") 
    private String url; 

    @SerializedName("image") 
    private String image; 

    // how do I place the sub-arrays for the image here? 
    ... 


    public final String get_title() { 
     return this.title; 
    } 

    public final String get_url() { 
     return this.url; 
    } 

    public final String get_image() { 
     return this.image; 
    } 

    ... 

} 

そして、私のメイン:

  Gson gson = new Gson(); 
      JsonParser parser = new JsonParser(); 
      JsonArray Jarray = parser.parse(jstring).getAsJsonArray(); 

      ArrayList<accessorClass > aens = new ArrayList<accessorClass >(); 

      for(JsonElement obj : Jarray) 
      { 
       accessorClass ens = gson.fromJson(obj , accessorClass .class); 
       aens.add(ens); 
      } 

あなたがするための最良の方法だろうどう思いますかここで画像のサブアレイを取得しますか?

答えて

3

FYIあなたのJSONが配列の場合:{"results:":[{"title":"aaa","url":"bbb","image":{"url":"ccc","width":"100","height":"20...},{}]}

次にあなたがラッパークラスを必要とする:

class WebServiceResult { 
    public List<AccessorClass> results; 
} 

あなたのJSONはそのようにフォーマットされていない場合は、あなたが作成したループのために、あなたはそれを行いますJSONが上記のように形成されていれば、ちょっとぎこちなくていいでしょう。

class ImageClass { 
    private String url; 
    private int width; 
    private int height; 

    // Getters and setters 
} 

Imageクラスを作成します。次にGSON次に入ってくる文字列

Gson gson = new Gson(); 
AccessorClass object = gson.fromJson(result, AccessorClass.class); 

仕事をし、あなたのAccessorClass

@SerializedName("image") 
    private ImageClass image; 

    // Getter and setter 

を変更。

+0

ありがとうございました! –

+0

問題ありません..あなたのjsonがどのようにフォーマットされるべきかを説明するためにもう少し追加されましたが、あなたがそれを持っていたように動作するはずです。 :) –

関連する問題