소개
JSON (JavaScript Object Notation) 은 가볍고 널리 사용되는 데이터 교환 형식입니다. 읽고 쓰기 쉬우며 클라이언트 - 서버 간의 데이터 교환에 널리 사용됩니다. 이 랩에서는 Jackson, Gson, Genson, Json-io 를 포함한 인기 있는 Java JSON 라이브러리를 사용하여 객체를 JSON 형식으로 직렬화 (serialize) 및 역직렬화 (deserialize) 하는 방법을 배우게 됩니다.
JSON (JavaScript Object Notation) 은 가볍고 널리 사용되는 데이터 교환 형식입니다. 읽고 쓰기 쉬우며 클라이언트 - 서버 간의 데이터 교환에 널리 사용됩니다. 이 랩에서는 Jackson, Gson, Genson, Json-io 를 포함한 인기 있는 Java JSON 라이브러리를 사용하여 객체를 JSON 형식으로 직렬화 (serialize) 및 역직렬화 (deserialize) 하는 방법을 배우게 됩니다.
cd ~/project를 실행하여 프로젝트 디렉토리로 이동합니다.touch JsonLab.java 명령을 실행하여 이 랩을 위한 새로운 Java 파일을 생성하고 다음 코드를 붙여넣습니다.import java.io.IOException;
public class JsonLab {
public static void main(String[] args) throws IOException {
ClassA classAObj = new ClassA("Demo", 20.0); // create object to serialize and deserialize later
}
// add ClassA class here
}
pom.xml 파일에 Jackson Maven 의존성을 추가해야 합니다.<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
ObjectMapper 클래스를 사용하여 객체를 JSON 문자열로 직렬화 (serialize) 및 역직렬화 (deserialize) 해야 합니다.import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonLab {
public static void main(String[] args) throws IOException {
ObjectMapper objMapper = new ObjectMapper();
ClassA classAObj = new ClassA("Demo", 20.0);
// Serialization
String jsonString = objMapper.writeValueAsString(classAObj);
System.out.println("Serialized String: " + jsonString);
// Deserialization
ClassA objFromStr = objMapper.readValue(jsonString, ClassA.class);
System.out.print("Deserialized Object: " + objFromStr.getField1() + " " + objFromStr.getField2());
}
}
pom.xml 파일에 Gson Maven 의존성을 추가해야 합니다.<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
</dependencies>
Gson 객체를 사용하여 객체를 직렬화 (serialize) 및 역직렬화 (deserialize) 해야 합니다.import com.google.gson.Gson;
public class JsonLab {
public static void main(String[] args) throws IOException {
Gson gson = new Gson();
ClassA obj = new ClassA("Demo", 20.0);
// Serialization
String jsonStrFromObj = gson.toJson(obj);
System.out.println("Serialized String: " + jsonStrFromObj);
// Deserialization
ClassA objFromJsonStr = gson.fromJson(jsonStrFromObj, ClassA.class);
System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
}
}
pom.xml 파일에 Genson Maven 의존성을 추가해야 합니다.<dependencies>
<dependency>
<groupId>com.owlike</groupId>
<artifactId>genson</artifactId>
<version>${genson.version}</version>
</dependency>
</dependencies>
Genson 객체를 사용하여 객체를 직렬화 (serialize) 및 역직렬화 (deserialize) 해야 합니다.import com.owlike.genson.Genson;
public class JsonLab {
public static void main(String[] args) throws IOException {
Genson genson = new Genson();
ClassA obj = new ClassA("Demo", 20.0);
// Serialization
String jsonStrFromObj = genson.serialize(obj);
System.out.println("Serialized String: " + jsonStrFromObj);
// Deserialization
ClassA objFromJsonStr = genson.deserialize(jsonStrFromObj, ClassA.class);
System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
}
}
pom.xml 파일에 Json-io Maven 의존성을 추가해야 합니다.<dependencies>
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>${json-io.version}</version>
</dependency>
</dependencies>
JsonWriter 및 JsonReader를 사용하여 객체를 직렬화 (serialize) 및 역직렬화 (deserialize) 해야 합니다.import com.cedarsoftware.util.io.JsonReader;
import com.cedarsoftware.util.io.JsonWriter;
public class JsonLab {
public static void main(String[] args) throws IOException {
ClassA obj = new ClassA("Demo", 20.0);
// Serialization
String jsonStrFromObj = JsonWriter.objectToJson(obj);
System.out.println("Serialized String: " + jsonStrFromObj);
// Deserialization
ClassA objFromJsonStr = (ClassA) JsonReader.jsonToJava(jsonStrFromObj);
System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
}
}
이 랩에서는 다양한 Java JSON 라이브러리를 사용하여 객체를 JSON 형식으로 변환하고 그 반대로 변환하는 방법을 배웠습니다. Jackson, Gson, Genson 및 Json-io 라이브러리를 사용하여 객체를 JSON 으로 직렬화 (serialize) 하고 역직렬화 (deserialize) 하는 방법을 익혔습니다.