Java에서 JSON 파일 읽기

Siddharth Swami 2023년10월12일
Java에서 JSON 파일 읽기

JavaScript Object Notation은 데이터를 저장하고 전송하기 위한 가벼운 텍스트 기반 언어입니다. 객체와 배열은 JSON 파일로 표현되는 두 가지 데이터 유형입니다.

이 튜토리얼은 Java에서 JSON 파일을 읽는 방법을 보여줍니다.

JSON 파일을 읽기 위해 FileReader() 함수를 사용하여 FileReader 객체를 시작하고 주어진 JSON 파일을 읽습니다.

이 예에서는 다음 파일을 읽습니다.

{
    "firstName": "Ram",
    "lastName": "Sharma",
    "age": 26
    },

    "phoneNumbers": [
        {
            "type": "home",
            "phone-number": "212 888-2365"
        }
    ] 
}

이 파일의 내용을 구문 분석하기 위해 json.simple 자바 라이브러리를 사용합니다. java.simple 라이브러리에서 org.json.simple.JSONArrayorg.json.simple.JSONObject 클래스의 두 가지 클래스를 가져와야 합니다. JSONArray는 배열 형태의 요소를 읽는 데 도움이 되며 JSONObject는 JSON 텍스트에 있는 개체를 읽는 데 도움이 됩니다.

아래 코드에서 우리는 이미 시스템에 있는 JSON 파일을 읽었고, 그 파일에서 파일의 이름과 성을 인쇄합니다.

예를 들어,

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;

public class JSONsimple {
  public static void main(String[] args) throws Exception {
    // parsing file "JSONExample.json"
    Object ob = new JSONParser().parse(new FileReader("JSONFile.json"));

    // typecasting ob to JSONObject
    JSONObject js = (JSONObject) ob;

    String firstName = (String) js.get("firstName");
    String lastName = (String) js.get("lastName");

    System.out.println("First name is: " + firstName);
    System.out.println("Last name is: " + lastName);
  }
}

출력:

First name is: Ram
Last name is: Sharma

위의 예에서 JSON 파일에서 읽은 이름과 성을 볼 수 있습니다.

여기서 우리는 파일에서 JSON 텍스트를 구문 분석하는 Java의 org.json.simple.parser.* 클래스에 있는 JSONParser().parse()를 사용했습니다. 여기에서 js.get() 메소드는 파일에서 이름과 성을 가져옵니다.

다른 방법을 사용하여 JSON 콘텐츠를 구문 분석할 수 있지만 메인 파일은 FileReader()를 사용하여 읽습니다.

문자열에서 직접 JSON을 구문 분석할 수도 있습니다. JSON 문자열을 구문 분석할 수 있는 다른 방법도 있습니다.

아래 코드는 org.json 메소드를 보여줍니다. 여기에서 정적 문자열 json에 전체 파일을 복사하여 붙여넣을 것입니다. 그런 다음 파일에서 JSON 개체와 배열을 읽는 데 사용할 개체를 만듭니다.

import org.json.JSONArray;
import org.json.JSONObject;

public class JSON2 {
  static String json = "{\"contacDetails\": {\n" + // JSON text in the file is written here
      "            \"firstName\": \"Ram\",\n"
      + "            \"lastName\": \"Sharma\"\n"
      + "    },\n"
      + "    \"phoneNumbers\": [\n"
      + "            {\n"
      + "                \"type\": \"home\",\n"
      + "                \"phone-number\": \"212 888-2365\",\n"
      + "            }\n"
      + "    ]"
      + "}";
  public static void main(String[] args) {
    // Make a object
    JSONObject ob = new JSONObject(json);

    // getting first and last name
    String firstName = ob.getJSONObject("contacDetails").getString("firstName");
    String lastName = ob.getJSONObject("contacDetails").getString("lastName");
    System.out.println("FirstName " + firstName);
    System.out.println("LastName " + lastName);

    // loop for printing the array as phoneNumber is stored as array.
    JSONArray arr = obj.getJSONArray("phoneNumbers");
    for (int i = 0; i < arr.length(); i++) {
      String post_id = arr.getJSONObject(i).getString("phone-number");
      System.out.println(post_id);
    }
  }
}

출력:

FirstName Ram
LastName Sharma
212 888-2365

관련 문장 - Java JSON