오늘 작성할 내용은 ObjectMapper입니다.
공부를 하고 정리한 내용입니다.
objectMapper란 JsonNode를 자바에서 컨트롤 하기 위해 사용하는 방법입니다.
오브젝트 형식을 JSON으로 변환 또는 JSON형식을 오브젝트 형식으로 변환하는 방법에 대해 알아보겠습니다.
먼저 dto에 우리가 생성할 JSON 데이터 형식을 만들어 줍니다.
{
"name":"",
"age":,
"cars":[
{
"name":"",
"car_number":"",
"type":""
},
{
"name":"",
"car_number":"",
"type":""
}
]
}
public class Car {
private String name;
@JsonProperty("car_number")
private String car_number;
@JsonProperty("TYPE")
private String type;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCar_number() {
return car_number;
}
public void setCar_number(String car_number) {
this.car_number = car_number;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public String toString() {
return "Car{" +
"name='" + name + '\'' +
", car_number='" + car_number + '\'' +
", type='" + type + '\'' +
'}';
}
}
public class User {
private String name;
private int age;
private List<Car> cars;
public List<Car> getCars() {
return cars;
}
public void setCars(List<Car> cars) {
this.cars = cars;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", cars=" + cars +
'}';
}
}
public class Main {
public static void main(String[] args) throws JsonProcessingException {
System.out.println("main");
ObjectMapper objectMapper = new ObjectMapper();
User user = new User();
user.setName("홍길동");
user.setAge(10);
Car car1 = new Car();
car1.setName("K5");
car1.setCar_number("11가 1111");
car1.setType("sedan");
Car car2 = new Car();
car2.setName("Q5");
car2.setCar_number("22가 2222");
car2.setType("SUV");
List<Car> carList = Arrays.asList(car1, car2);
user.setCars(carList);
그리고 이 JSON 데이터 형식을 이용하여 ObjectMapper를 사용하여 JSON 데이터를 만들어주고 이 JSON데이터를 다시 ObjectMapper를 사용하여 컨트롤 하는 코드를 만들었습니다.
String json = objectMapper.writeValueAsString(user);
System.out.println(json);
JsonNode jsonNode = objectMapper.readTree(json);
String _name = jsonNode.get("name").asText();
int _age = jsonNode.get("age").asInt();
System.out.println("name:" +_name);
System.out.println("age:" +_age);
JsonNode cars = jsonNode.get("cars");
ArrayNode arrayNode = (ArrayNode)cars;
List<Car> _cars = objectMapper.convertValue(arrayNode, new TypeReference<List<Car>>() { });
System.out.println(_cars);
ObjectNode objectNode = (ObjectNode) jsonNode;
objectNode.put("name","steve");
objectNode.put("age","20");
System.out.println(objectNode.toPrettyString());
}
}