Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Flexjson으로 JSON을 기존 객체에 역직렬화하는 방법


Flexjson은 Java 빈(Bean), Map, 배열(Array) 및 컬렉션(Collection)을 JSON 형식으로 직렬화하고 역직렬화할 수 있는 경량급 Java 라이브러리입니다. 이 라이브러리를 활용하면 JSONDeserializer 클래스가 제공하는 deserializeInto() 메서드를 통해 JSON 문자열을 새 객체를 만들지 않고도 기존 객체에 그대로 역직렬화할 수 있습니다. 이 메서드는 주어진 JSON 입력을 지정된 대상(target) 객체에 적용하며, JSON에 포함된 값은 대상 객체의 기존 값을 덮어쓸 수 있습니다. 즉, JSON에 특정 필드의 값이 존재하면 해당 값이 기존 객체에 반영됩니다.

구문

public T deserializeInto(String input, T target)

예제

import flexjson.JSONDeserializer;
public class JsonDeserializeTest {
    public static void main(String[] args) {
        Employee emp = new Employee("Adithya", "Ram", 25, 35000.00);
        System.out.println(emp);
        JSONDeserializer<Employee> deserializer = new JSONDeserializer<Employee>();
        String jsonStr =
                         "{" +
                         \"\"age\": 30," +
                         \"\"salary\": 45000.00" +
                         "}";
        emp = deserializer.deserializeInto(jsonStr, emp);
        System.out.println(emp);
    }
}
// Employee 클래스
class Employee {
    private String firstName;
    private String lastName;
    private int age;
    private double salary;
    public Employee() {}
    public Employee(String firstName, String lastName, int age, double salary) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
        this.salary = salary;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public String toString() {
        return "Employee[ " +
        "firstName = " + firstName +
        ", lastName = " + lastName +
        ", age = " + age +
        ", salary = " + salary +
        " ]";
    }
}

출력 결과

Employee[ firstName = Adithya, lastName = Ram, age = 25, salary = 35000.0 ]
Employee[ firstName = Adithya, lastName = Ram, age = 30, salary = 45000.0 ]

실행 결과를 보면, JSON 문자열에는 agesalary 값만 포함되어 있기 때문에 이 두 필드만 각각 25에서 30으로, 35000.0에서 45000.0으로 업데이트되었습니다. 반면 firstNamelastName은 JSON에 포함되지 않아 기존 값이 그대로 유지된 것을 확인할 수 있습니다. 이처럼 deserializeInto() 메서드를 사용하면 전체 객체를 새로 생성하지 않고도 필요한 필드만 선택적으로 갱신할 수 있어, 부분 업데이트(Partial Update) 처리에 매우 유용합니다.