2016-10-05 2 views
0

문자열을 "nil"으로 볼 때마다 null을 반환하는 비 직렬화를 만들었습니다. 그것은 것을 제외하고 잘 작동하나의 필드를 제외한 모든 문자열을 한 방향으로 처리하는 Gson 비 정렬을 만드는 방법은 무엇입니까?

private static Gson createCustomGson() { 
    GsonBuilder gsonBuilder = new GsonBuilder(); 
    gsonBuilder.registerTypeAdapter(String.class, new JsonDeserializer<String>() { 
     @Override 
     public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { 
      return (json.getAsString().equals("nil")) ? null : json.getAsString(); 
     } 
    }); 
    return gsonBuilder.create(); 
} 

, 나는 필드 목록을 저장 "키워드"를, 내가 널 돌아 전무을 제거하고 싶지 않은 예외를 추가 할 수 있지만 문자열을 유지합니다. "키워드"에 예외를 추가하는 방법은 무엇입니까?

내 키워드 클래스는 해결책을 찾을 수 아래의 유형

public class KeywordListing implements Serializable { 
    List<String> keys; 
} 

답변

0

이다. 그것은 아래와 같이 대신 Gson의 기본 deserizliation을 사용하기 위해 다른 TypeAdapter를 추가하는 것입니다.

private static Gson createCustomGson() { 
    GsonBuilder gsonBuilder = new GsonBuilder(); 
    gsonBuilder.registerTypeAdapter(String.class, new JsonDeserializer<String>() { 
     @Override 
     public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { 
      return (json.getAsString().equals("nil")) ? null : json.getAsString(); 
     } 
    }); 
    gsonBuilder.registerTypeAdapter(KeywordListing.class, new JsonDeserializer<KeywordListing>() { 
       @Override 
       public KeywordListing deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { 
        return new Gson().fromJson(json, KeywordListing.class); 
       } 
      }); 

    return gsonBuilder.create(); 
} 

내가 위에있는 것보다 짧은 답변이 있으면 알려주십시오.

관련 문제