1
주석을 사용하여 Map
을 포함하는 객체를 직렬화하려고 시도했지만 테스트했을 때지도의 키만 직렬화되는 것을 보았습니다. 나는 그것을 찾았지만 아무런 해결책도 찾지 못했다. 내가 뭘 잘못하고 있니?@JsonProperty를 사용하여지도를 일련 화하기
public class People {
private final Map<Long,String> idToNameMap;
public People(@JsonProperty("idToNameMap") final Map<Long,String> idToNameMap) {
this.idToNameMap = idToNameMap;
}
}
public class PeopleTest {
private static final long ID_1 = 111l;
private static final long ID_2 = 222l;
private static final String NAME_1 = "name1";
private static final String NAME_2 = "name2";
private final ObjectMapper mapper = new ObjectMapper();
@Test
public void testFromAndToJSON() throws Exception {
Map<Long,String> idToNameMap = Maps.newHashMap();
idToNameMap.put(ID_1,NAME_1);
idToNameMap.put(ID_2,NAME_2);
mapper.writeValueAsString(new People(idToNameMap));
}
}
위대한, 그것은 할 것 같다 :) 나는 한 가지 더 질문이 있습니다 :지도의 키가 문자열로, 그리고 Longs로 직렬화 된 것 같습니다. Longs 키 직렬화를 강제하는 방법이 있습니까? – user2512231
@ user2512231 글쎄, JSON 키는 항상 문자열입니다. 그렇지 않으면 유효한 JSON이 아닙니다. 그러나 값은 숫자, 문자열, 배열 또는 기타 JSON 객체 일 수 있습니다. – wassgren
감사합니다. – user2512231