MyPojo
JSON에서 역 직렬화하는 데 관심 이있는 Java 클래스 가 있습니다. MyPojoDeMixIn
deserialization을 지원하기 위해 특별한 MixIn 클래스를 구성했습니다 . MyPojo
만 보유 int
하고 String
적절한 게터와 세터 결합 인스턴스 변수. MyPojoDeMixIn
다음과 같이 보입니다.
public abstract class MyPojoDeMixIn {
MyPojoDeMixIn(
@JsonProperty("JsonName1") int prop1,
@JsonProperty("JsonName2") int prop2,
@JsonProperty("JsonName3") String prop3) {}
}
내 테스트 클라이언트에서 다음을 수행하지만 JsonMappingException
유형 불일치와 관련 이 있기 때문에 컴파일 타임에는 작동하지 않습니다 .
ObjectMapper m = new ObjectMapper();
m.getDeserializationConfig().addMixInAnnotations(MyPojo.class,MyPojoDeMixIn.class);
try { ArrayList<MyPojo> arrayOfPojo = m.readValue(response, MyPojo.class); }
catch (Exception e) { System.out.println(e) }
나는 오직 하나만있는 "Response"객체를 생성함으로써이 문제를 완화 할 수 있다는 것을 알고 ArrayList<MyPojo>
있지만, 반환하고자하는 모든 단일 유형에 대해 다소 쓸모없는 객체를 생성해야합니다.
나는 또한 JacksonInFiveMinutes를 온라인으로 보았지만 그 내용 Map<A,B>
과 그것이 내 문제와 어떻게 관련되는지 이해하는 데 끔찍한 시간 을 보냈 습니다 . 당신이 말할 수 없다면, 나는 완전히 Java를 처음 접했고 Obj-C 배경에서 왔습니다. 그들은 구체적으로 다음과 같이 언급합니다.
POJO 및 "단순"유형에 대한 바인딩 외에도 일반 (유형화 된) 컨테이너에 대한 바인딩의 추가 변형이 하나 있습니다. 이 경우에는 소위 Type Erasure (Java에서 다소 역 호환 방식으로 제네릭을 구현하는 데 사용됨)로 인해 특수 처리가 필요하므로 Collection.class (컴파일되지 않음)와 같은 것을 사용할 수 없습니다.
따라서 데이터를 맵에 바인딩하려면 다음을 사용해야합니다.
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
어떻게 직접 역 직렬화 할 수 ArrayList
있습니까?