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

Java에서 JSON 객체를 인코딩하는 방법 완벽 정리

JSONObjectjava.util.HashMap의 하위 클래스로, 저장된 요소들의 순서가 보장되지 않습니다. 만약 요소의 순서를 엄격하게 유지해야 한다면 java.util.LinkedHashMap을 활용한 JSONValue.toJSONString(map) 메서드를 사용하면 됩니다.

이 글에서는 Java에서 JSON 객체를 인코딩하는 두 가지 대표적인 방법을 예제와 함께 살펴보겠습니다.

예제 1: HashMap을 이용한 JSON 객체 인코딩

첫 번째 방법은 HashMap에 데이터를 담은 후 JSONObject로 변환하는 방식입니다.

import java.util.*;
import org.json.simple.JSONObject;
public class JSONEncodingTest {
    public static void main(String[] args) {
        Map<Object, Object> dataMap = new HashMap<Object, Object>();
        dataMap.put("Name", "Adithya");
        dataMap.put("Age", new Integer(25));
        dataMap.put("Salary", new Double(25000.00));
        dataMap.put("Employee Id", new Integer(115));
        dataMap.put("Company", "TutorialsPoint");
        JSONObject jsonObj = new JSONObject(dataMap);
        System.out.print("Encoding a JSON object: ");
        System.out.print(jsonObj);
    }
}

실행 결과

Encoding a JSON object: {"Salary":25000.0,"Employee id":115,"Company":"TutorialsPoint","Age":25,"Name":"Adithya"}

출력 결과에서 확인할 수 있듯이, HashMap은 내부적으로 해시 알고리즘을 사용하기 때문에 데이터를 입력한 순서와 출력 순서가 다르게 나타납니다.

예제 2: StringWriter를 이용한 JSON 문자열 생성

두 번째 방법은 writeJSONString() 메서드와 StringWriter를 조합하여 JSON 객체를 문자열로 직접 작성하는 방식입니다.

import java.io.*;
import org.json.simple.*;
public class JSONEncodingTest1 {
    public static void main(String[] args) throws IOException {
        JSONObject obj = new JSONObject();
        obj.put("Name", "Jai");
        obj.put("Mobile_Number", new Integer(995998480));
        obj.put("Bank_Balance", new Double(50000.00));
        obj.put("Is_A_SelfEmployee", new Boolean(false));
        StringWriter out = new StringWriter();
        obj.writeJSONString(out);
        String jsonText = out.toString();
        System.out.print(jsonText);
    }
}

실행 결과

{"Is_A_SelfEmployee":false,"Bank_Balance":50000.0,"Mobile_Number":995998480,"Name":"Jai"}

정리

Java에서 JSON 객체를 인코딩하는 방법은 크게 두 가지입니다. 첫째, HashMap에 데이터를 저장한 뒤 JSONObject 생성자에 전달하는 방법이고, 둘째, JSONObject에 직접 데이터를 넣고 writeJSONString() 메서드로 문자열을 추출하는 방법입니다. 요소의 순서가 중요하다면 LinkedHashMapJSONValue.toJSONString(map) 메서드를 함께 사용하는 것이 좋습니다.