2017-01-01 1 views
6

배열이있는 Json 파일을 deserialize해야합니다. 그것을 역 직렬화하는 방법을 알고 List 개체를 얻을 수 있지만 프레임 워크에서 Java List 인터페이스를 구현하지 않는 사용자 지정 목록 개체를 사용하고 있습니다. 내 질문은, 어떻게 내 사용자 지정 목록 개체에 대한 deserializer 쓸 수 있습니까?Gson에서 맞춤 목록 디시리얼라이저를 만드는 방법은 무엇입니까?

편집 : 나는 모든을 위해 디시리얼라이저를 만들기 위해 성가신 것 때문에 디시리얼라이저는 CustomList<Integer>처럼, 나는 그것을 목록의 모든 종류의 구약 작업을 원하는 CustomList<String>, 목록의 CustomList<CustomModel> 아니라 특정 종류의 의미, 보편적 할 나는 종류를 사용합니다.

Gson gson = new GsonBuilder() 
     .registerTypeAdapter(CustomList.class, new CustomListConverter()) 
     .create(); 
+2

이 왜 자바 클래스 첫 번째로 먼저 직렬화하지 않는 한 다음에 자신의 변압기를 쓰기 :

class CustomListConverter implements JsonDeserializer<CustomList<?>> { public CustomList deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext ctx) { Type valueType = ((ParameterizedType) typeOfT).getActualTypeArguments()[0]; CustomList<Object> list = new CustomList<Object>(); for (JsonElement item : json.getAsJsonArray()) { list.add(ctx.deserialize(item, valueType)); } return list; } } 

이처럼 등록 –

+0

좀 봐 [this] (http://stackoverflow.com/questions/16590377/custom-json-deserializer-using-gson) –

+0

@ReazMurshed 나는 그것을 할 수 있지만 그것을 개체 모델에 deserialize 오전 그때 나머지 코드에서 사용하십시오. ModelJson 클래스와 ModelJson 하나가 Java의 List 인터페이스를 사용하는 Model 클래스를 만들 수 있으며, 역 직렬화에만 사용되어 Model 클래스로 변환됩니다. 이 문제는 내가 그렇게하는 수업이 많아서 조금은 고통스럽고 더 우아한 해결책이 있는지 없는지 궁금합니다. 거기에 없다면 하드 코딩 경로를 따라갈 것이지만 나는 그렇게하지 않았 으면 좋겠다. – BananyaDev

답변

2

내가 생각 해낸 것입니다 사용자 지정 목록 개체?
+0

늦게 대응하여 죄송합니다. 귀하의 답변은 실제로 정확합니다. 대단히 감사합니다. – BananyaDev

관련 문제