flickr에서 특정 필드를 선택적으로 비 직렬화하는 방법을 찾으려고합니다.Java Gson 객체 내부 목록에서 선택된 필드의 직렬화 해제
{"photos":{"page":1,"pages":10,"perpage":100,"total":1000,"photo":[{"id":"","owner":"","secret":"","server":"","farm":,"title":"","ispublic":,"isfriend":,"isfamily":0,"url_s":"","height_s":"","width_s":""},...]}
나는이 목록 (사진 및 사진)를 포함하는 객체를 받고 난 사진에서 자바만을 ID, url_s 및 제목을 모델링하고 싶습니다.
내가 관심이있는 필드에 @expose 주석을 사용하여 Java 모듈을 만들 수 있다는 것을 알아 냈습니다. builder.excludeFieldsWithoutExposeAnnotation(); 이렇게하면 어떤 필드가 사진에서 역 직렬화 될지 제어 할 수 있습니다 (그래도 여전히 그런 일이 확실하지 않습니다). 그러나 사진은 어떻게됩니까?
내 질문은 : 그 목록을 무시하는 방법이
있습니까? 두 번째 목록에서 필요한 항목을 가져 오는 두 개의 목록 (각 필드 포함)이 포함 된 Java 클래스를 모델링해야합니까?
public class GalleryItem { @Expose() private String mCaption; @Expose() private String mId; @Expose() private String mUrl; }
이 난 단지 내가 필요로하는 부분에 GSON를 호출 할 수 있습니다 : 사진에 대 한 내 모듈 클래스 인 경우
, 이전의 질문에 확장?
Type galleryListType = new TypeToken<ArrayList<GalleryItems>>(){}.getType(); List<GalleryItems> itemsList = gson.fromJson(jsonString, galleryListType);
나는 어떻게 든 사진 목록을 건너 setExclusionStrategies를 사용할 수 있습니까?
gsonBuilder.setExclusionStrategies(new ExclusionStrategy() { @Override public boolean shouldSkipField(FieldAttributes f) { **return f.getName().contains("photos")**; } @Override public boolean shouldSkipClass(Class<?> incomingClass) { return ; } });
은 이미 원시 된 JSONObject/JSONArray 사용하여 솔루션을 구현했습니다하지만 난 손에서 작업 GSON를 사용에 대한 궁금 하군요.
미리 감사드립니다.
나는 선택적으로 역 직렬화려고하기 때문에 늘 @Expose (내가 위에 쓴) 과도를 사용하는 나에게 도움이 될 수 있습니다 알고 과도 변수를 제외한 모든 것을 직렬화하지 않는다. –