Java에서 객체를 JSON으로 직렬화

Sheeraz Gul 2023년10월12일
Java에서 객체를 JSON으로 직렬화

이 튜토리얼은 Java-JSONJackson API를 사용하여 Java에서 객체를 JSON으로 직렬화하는 방법을 보여줍니다.

Java에서 객체를 JSON으로 직렬화

JSON 작업에 사용되는 다양한 라이브러리가 제공됩니다. 이러한 라이브러리는 Java 프로그래밍을 사용하여 Java 객체를 JSON으로 직렬화할 수도 있습니다.

Java-JSON API를 사용하여 Java 개체를 JSON으로 직렬화

Java-JSON은 Java가 내장 모드에서 JSON을 지원하지 않기 때문에 Java에서 JSON 작업을 수행하는 타사 API입니다. 이 라이브러리는 Java 객체를 JSON으로 직렬화할 수 있습니다.

Java-JSON은 다양한 기능을 제공하며 많은 유사 라이브러리보다 우수합니다. 주요 기능은 다음과 같습니다.

  • 하위 호환성.
  • 일관되고 신뢰할 수 있는 결과.
  • 실행 속도가 빠르고 메모리 사용량이 적습니다.
  • 외부 종속성이 없습니다.
  • JSON 사양 준수를 제공합니다.

이 API를 사용하기 전에 빌드 경로에 추가해야 합니다. Gradle 프로젝트 종속성을 사용하여 쉽게 수행할 수 있습니다.

implementation 'org.json:json:20210307'

여기에서 이 API의 jar 파일을 다운로드하여 일반 Java 프로젝트에 추가하고 프로젝트의 빌드 경로에 추가할 수도 있습니다.

Java-JSON은 Java 데이터를 JSON 개체로 직렬화하는 데 사용할 수 있는 JSONWriter 클래스를 제공합니다. 예를 들어 보겠습니다.

package delftstack;

import java.io.StringWriter;
import java.io.Writer;
import org.json.JSONException;
import org.json.JSONWriter;

public class Example {
  public static void main(String[] args) throws JSONException {
    Writer DemoUser = new StringWriter();

    var JSON_Writer = new JSONWriter(DemoUser);

    JSON_Writer.object();
    JSON_Writer.key("Name").value("Sheeraz");
    JSON_Writer.key("Occupation").value("Software Engineer");
    JSON_Writer.key("Age").value(28);
    JSON_Writer.key("Married").value(false);

    JSON_Writer.key("Skills");
    JSON_Writer.array();
    JSON_Writer.value("Java");
    JSON_Writer.value("Python");
    JSON_Writer.value("PHP");
    JSON_Writer.value("Matlab");
    JSON_Writer.value("R");
    JSON_Writer.endArray();

    JSON_Writer.endObject();

    System.out.println(DemoUser);
  }
}

위의 코드는 API의 JSONWriter 클래스를 사용하여 데이터를 JSON 개체로 직렬화합니다. 출력 참조:

{"Name":"Sheeraz","Occupation":"Software Engineer","Age":28,"Married":false,"Skills":["Java","Python","PHP","Matlab","R"]}

Jackson API를 사용하여 Java 개체를 JSON으로 직렬화

‘Jackson’은 Java에서 JSON 작업을 위한 오픈 소스 라이브러리입니다. 라이브러리는 Java에서 JSON 개체를 직렬화 및 역직렬화할 수 있습니다.

이 라이브러리에는 Java 개체를 JSON 개체로 직렬화하는 데 사용되는 writeValue(...) 메서드가 있습니다. 이 API는 maven 종속성으로 추가할 수 있습니다.

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

또 다른 방법은 일반 프로젝트 빌드 경로에 Jackson API용 jars를 추가하는 것입니다. 아래 링크에서 jars를 다운로드하십시오.

  1. 잭슨-데이터바인드
  2. 잭슨 코어

이제 API가 빌드 경로에 추가되면 Java 개체를 JSON으로 직렬화하는 예제를 시도할 수 있습니다.

package delftstack;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;

public class Example {
  public static void main(String args[]) {
    Example JSON_Tester = new Example();
    try {
      Employee Employee1 = new Employee();
      Employee1.setAge(28);
      Employee1.setName("Sheeraz");
      JSON_Tester.writeJSON(Employee1);

      Employee Employee2 = JSON_Tester.readJSON();
      System.out.println(Employee2);

    } catch (JsonParseException e) {
      e.printStackTrace();
    } catch (JsonMappingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private void writeJSON(Employee employee)
      throws JsonGenerationException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Object_Mapper.writeValue(new File("employee.json"), employee);
  }

  private Employee readJSON() throws JsonParseException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Employee employee = Object_Mapper.readValue(new File("employee.json"), Employee.class);
    return employee;
  }
}

class Employee {
  private String Employee_Name;
  private int Employee_Age;
  public Employee() {}
  public String getName() {
    return Employee_Name;
  }
  public void setName(String Employee_Name) {
    this.Employee_Name = Employee_Name;
  }
  public int getAge() {
    return Employee_Age;
  }
  public void setAge(int Employee_Age) {
    this.Employee_Age = Employee_Age;
  }
  public String toString() {
      return "Employee [Employee Name: "+Employee_Name+",
      Employee Age: "+Employee_Age+ " ]";
  }
}

위의 코드는 Java 클래스의 데이터를 JSON으로 변환합니다. 출력 참조:

Employee [Employee Name: Sheeraz, Employee Age: 28 ]
작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - Java Object

관련 문장 - Java JSON