내가 어떻게 Collections.unmodifiableMap?
잭슨 직렬화 Collections.unmodifiable *
내가 오류에서 직렬화 않는, JSON에서 잭슨 직렬화 사용에 문제가있다 :
com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of java.util.Collections$UnmodifiableMap, problem: No default constructor found
나는 SimpleAbstractTypeResolver
에서를 사용하고 싶었 http://wiki.fasterxml.com/SimpleAbstractTypeResolver 그러나 나는 내부 클래스 형 Collections$UnmodifiableMap
Map<Integer, String> emailMap = newHashMap();
Account testAccount = new Account();
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, As.PROPERTY);
String marshalled ;
emailMap.put(Integer.valueOf(10), "[email protected]");
testAccount.setMemberEmails(emailMap);
marshalled = mapper.writeValueAsString(testAccount);
System.out.println(marshalled);
Account returnedAccount = mapper.readValue(marshalled, Account.class);
System.out.println(returnedAccount.containsValue("[email protected]"));
public class Account {
private Map<Integer, String> memberEmails = Maps.newHashMap();
public void setMemberEmails(Map<Integer, String> memberEmails) {
this.memberEmails = memberEmails;
}
public Map<Integer, String> getMemberEmails() {
return Collections.unmodifiableMap(memberEmails);
}
어떤 아이디어를 얻을 수 없다? 미리 감사드립니다.
감사의 뜻을 나타냅니다. 이것은 제 목적을 위해 완벽하게 작동합니다. 모델 클래스 자체의 주석으로 되돌아 가지 않고 동일한 동작을 유지할 수있는 방법이 있습니까? – hartraft
@hartraft 당신이 사용하고자하는 것이 Jackson Mix In의 http://wiki.fasterxml.com/JacksonMixInAnnotations입니다. – leo