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.JSONArray
및 org.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