2017-12-08 15 views
0

GSON 파서를 사용하여 Android에서 JSON을 구문 분석 할 때 속성 값에 따라 개체가 만들어지지 않도록 제외하는 규칙을 구현하고 싶습니다. 예 :사용자 지정 GSON 파서가 속성 값을 기반으로 개체 인스턴스 제외

{"people": [ 
    {"first_name": "Bob"}, 
    {"first_name": "Bob", "last_name": "Loblaw"}]} 

성이 없기 때문에 첫 번째 사람 개체를 제외하고 싶습니다.

구문 분석시 가능합니까?

답변

1

JsonDeserializer으로 가능합니다.

는 만들기

public class Response { 
    @Getter 
    private List<Person> people = new ArrayList<>(); 
} 

public class Person { 
    @Getter @Setter 
    private String first_name, last_name; 
} 

같은 POJO에있을 것입니다 가정 JsonDeserializer

public class PersonResponseDeserializer implements JsonDeserializer<Response> { 
    // Create a new gson to make the default parsing for response object 
    private final Gson gson = new Gson(); 

    @Override 
    public Response deserialize(JsonElement json, Type typeOfT 
     , JsonDeserializationContext context) throws JsonParseException { 
     Response r = gson.fromJson(json, typeOfT); 
     // Remove all persons from R that have last name null 
     r.getPeople().removeAll(
      r.getPeople().stream().filter(p -> p.getLast_name() == null) 
      .collect(Collectors.toSet()) 
    ); 
     return r; 
    } 
} 

다음

처럼 사용할 수

같은 10

구문 분석 할 때 수행해야하는 경우입니다. 어쩌면 구문 분석 후 People을 반복하고 성이없는 Person을 제외하는 것이 좋습니다.

+0

좋은 대답입니다. 여기에 가깝도록하겠습니다. 이 시점에서 파싱 한 후 데이터를 정리할 것입니다. – airowe