[JAVA] ObjectMapper 알아보기

fooooif·2021년 5월 10일
0
post-thumbnail

오늘 작성할 내용은 ObjectMapper입니다.
공부를 하고 정리한 내용입니다.
objectMapper란 JsonNode를 자바에서 컨트롤 하기 위해 사용하는 방법입니다.
오브젝트 형식을 JSON으로 변환 또는 JSON형식을 오브젝트 형식으로 변환하는 방법에 대해 알아보겠습니다.

코드

먼저 dto에 우리가 생성할 JSON 데이터 형식을 만들어 줍니다.

1. User, Car class (데이터 형식)

{
  "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);

2. Object to JSON, JSON to Object

그리고 이 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());
    }
}

profile
열심히 하자

0개의 댓글