Java에서 문자열을 JSON 객체로 변환

Rupam Yadav 2023년10월12일
  1. JSONObject를 사용하여 Java에서 문자열을 JSON 객체로 변환
  2. Google Gson을 사용하여 Java에서 문자열을 JSON 객체로 변환
  3. Jackson을 사용하여 문자열을 JSON 객체로 변환
Java에서 문자열을 JSON 객체로 변환

이 튜토리얼에서는 Java에서 문자열을 JSON 객체로 변환하는 방법에 대해 설명합니다. 이 작업을 수행하는 데 사용할 수있는 다양한 라이브러리가 있습니다.

JSONObject를 사용하여 Java에서 문자열을 JSON 객체로 변환

JSONObject는 문자열을 맵과 같은 객체로 파싱 할 수 있습니다. 정렬되지 않은 키-값 쌍을 저장합니다. 일반적으로org.json으로 알려진 JSON-java 라이브러리는 필수 maven 종속성과 함께 여기에서 사용됩니다. 우리가 사용한 maven 종속성은 다음과 같습니다.

 <!-- https://mvnrepository.com/artifact/org.json/json -->
 <dependency>           
   <groupId>org.json</groupId>
   <artifactId>json</artifactId>
   <version>20201115</version>
 </dependency>

JSON 문자열을JSONObject로 파싱하기 위해 아래와 같이 생성자에 문자열을 전달합니다.

import org.json.JSONException;
import org.json.JSONObject;

public class StringToJsonObject {
  public static void main(String[] args) {
    try {
      String str = "{\"name\":\"John\",\"age\":\"30\"}";
      JSONObject jsonObject = new JSONObject(str);
      System.out.println("OBJECT : " + jsonObject.toString());
    } catch (JSONException err) {
      System.out.println("Exception : " + err.toString());
    }
  }
}

출력:

OBJECT : {"age":"30","name":"John"}

Google Gson을 사용하여 Java에서 문자열을 JSON 객체로 변환

Google Gson은 Java Objects를 JSON으로 직렬화 / 역 직렬화하는 Java 라이브러리입니다. 또한 Java 문자열을 동등한 JSON 객체로 변환하는 데 사용할 수 있습니다.

이 라이브러리에 필요한 maven 종속성은 다음과 같습니다.

 <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
 </dependency>

이 코드에서는 먼저create()메서드를 호출하여 GsonBuilder를 사용하여 Gson 인스턴스를 만듭니다. 또한 builder에서 다양한 구성 설정을 활성화 할 수 있습니다. 아래와 같이setPrettyPrinting()메소드를 사용합니다. 이름에서 알 수 있듯이 JSON 출력을 꽤 인쇄합니다.

나중에 우리는 JSON 문자열을User 객체로 파싱하는 Gson Object의fromJson 메소드를 사용했습니다. toJson()메소드는 Gson을 사용하여User 객체를 다시 JSON 문자열로 변환합니다. 따라서 문자열str은 Gson 라이브러리를 사용하여 JSON 객체로 변환됩니다.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonIOException;
public class StringToJsonObject {
  public static void main(String[] args) {
    try {
      String str = "{\"name\":\"John\", \"age\":21 , \"place\":\"Nevada\"}";

      GsonBuilder builder = new GsonBuilder();
      builder.setPrettyPrinting();
      Gson gson = builder.create();
      User user = gson.fromJson(str, User.class);

      System.out.println(user.ShowAsString());

      str = gson.toJson(user);
      System.out.println("User Object as string : " + str);

    } catch (JsonIOException err) {
      System.out.println("Exception : " + err.toString());
    }
  }
}

class User {
  public String name;
  public int age;
  public String place;
  public String ShowAsString() {
    return "User [" + name + ", " + age + ", " + place + "]";
  }
}

출력:

User [John, 21, Nevada]
User Object as string : {
  "name": "John",
  "age": 21,
  "place": "Nevada"
}

Jackson을 사용하여 문자열을 JSON 객체로 변환

Jackson은 Java JSON 라이브러리’라고도합니다. ObjectMapper는 JSON을 Java Object로, Java Object를 JSON으로 매핑하는 데 사용됩니다. 이 라이브러리에 사용되는 maven 종속성은 다음과 같습니다.

 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.11.3</version>
  </dependency>

Jackson에는 JSON 개체를 나타내는 내장 트리 모델이 있습니다. JsonNode는 트리 모델을 나타내는 클래스입니다. ObjectMapper 인스턴스mapper는 JSON을readTree()를 호출하는JsonNode 트리 모델로 파싱합니다.

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class StringToJsonObject {
  public static void main(String[] args) {
    String json_str = "{\"name\":\"John\", \"age\":21 , \"place\":\"Nevada\"}";
    ObjectMapper mapper = new ObjectMapper();
    try {
      JsonNode node = mapper.readTree(json_str);
      String name = node.get("name").asText();
      String place = node.get("age").asText();
      System.out.println("node" + node);
      System.out.println("name: " + name + ", place: " + place);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
  }
}

출력:

node{"name":"John","age":21,"place":"Nevada"}
name: John, place: 21
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java String

관련 문장 - Java JSON