2012-03-13 3 views
4

내가 같은 JSON 문자열을 말해봐 :GSON을 사용하여 JSON 배열과 하위 배열을 구문 분석 하시겠습니까?

{"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

당신의 JSON 배열입니다 참고 경우 : JSON이 그렇게 포맷되지 않은 경우

class WebServiceResult { 
    public List<AccessorClass> results; 
} 

, 다음 루프를 들어 사용자가 만든 그것을 할 것입니다 : 다음 {"results:":[{"title":"aaa","url":"bbb","image":{"url":"ccc","width":"100","height":"20...},{}]}

당신이 래퍼 클래스가 필요 , (만약 당신의 JSON이 위와 같이 형성된다면, 조금 덜컹 거린다면 좋을 것이다).

는 입력 문자열

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

작업이 완료 GSON 그런 다음 당신의 AccessorClass

@SerializedName("image") 
    private ImageClass image; 

    // Getter and setter 

을 변경 이미지 클래스

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

    // Getters and setters 
} 

을 만듭니다.

+0

감사합니다. 작동하는 것 같습니다. –

+0

문제 없음 .. json을 포맷해야하는 방법을 설명하기 위해 조금 더 추가되었지만 가지고 있던대로 작동해야합니다. :) –

관련 문제