를 사용
- 을 : 잭슨)
가정이 같은 데이터를
User.java :
public class User {
private String name;
private Long rep;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Long getRep() { return rep; }
public void setRep(Long rep) { this.rep = rep; }
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", rep=" + rep +
'}';
}
}
Data.java :
public class Data {
private Map<String, User> record;
public Map<String, User> getRecord() { return record; }
public void setRecord(Map<String, User> record) { this.record = record; }
@Override
public String toString() {
return "Data{" +
"record=" + record +
'}';
}
}
709,993,210 을 캡처하는 두 개의 클래스, 객체 자체에 대한 사용자, 다른 하나 만들기
이제 JSON을 구문 분석합니다 (클래스 경로의 루트에 data.json
파일이 있다고 가정).
public class App {
public static void main(String[] args) throws Exception {
final ObjectMapper objectMapper = new ObjectMapper();
System.out.println(objectMapper.readValue(App.class.getResourceAsStream("/data.json"), Data.class));
System.out.println(objectMapper.readTree(App.class.getResourceAsStream("/data.json")));
}
}
이 출력됩니다 :
Data{record={jon-skeet=User{name='Jon Skeet', rep=982706}, darin-dimitrov=User{name='Darin Dimitrov', rep=762173}, novice-user=User{name='Novice User', rep=766}}}
{"record":{"jon-skeet":{"name":"Jon Skeet","rep":982706},"darin-dimitrov":{"name":"Darin Dimitrov","rep":762173},"novice-user":{"name":"Novice User","rep":766}}}
가 Map
의 경우이 경우 User
과 같은 몇 가지 정적 클래스를 사용하거나 Map
의 (Map<String, Map<String, ...>>
의 Map
의를 사용하여 완전히 동적 갈 수 있습니다. 그러나 너무 많은지도를 사용하는 경우 JsonNode
으로 전환하는 것이 좋습니다. 기본적으로 이들은 Map
과 동일하며 매우 동적 인 데이터를 위해 특별히 고안되었습니다. 하지만 나중에 함께 일하는 데 어려움을 겪을 것입니다 ...
전체 예제를 살펴보면 here을 준비했습니다.
사전/HashMap에 매핑/매핑 하시겠습니까? 사용자 지정 직렬화를 사용 하시겠습니까? POJO 필드 자체는 고정 된 이름 *입니다. – user2864740
지도 접근법을 좀 더 설명 할 수 있습니까? 맵 필드의 속성 이름을 사용하여 직렬화하지 않습니까? 나는 주로 잭슨 주석과 함께 POJO를 사용하고 있기 때문에 커스텀 시리얼 라이저를 원하지 않는다. 그래서이 경우에는 필자가 필요하다면 원치 않는다. –