Java에서 JSON 구문 분석
-
json.simple
라이브러리를 사용하여 Java에서 JSON 구문 분석 -
org.json
라이브러리를 사용하여 Java에서 JSON 구문 분석 -
gson
라이브러리를 사용하여 Java에서 JSON 구문 분석 -
JsonPath
라이브러리를 사용하여 Java에서 JSON 구문 분석
JSON은 데이터를 저장하고 전송하기 위한 가벼운 텍스트 기반 언어입니다. JavaScript의 객체를 기반으로 합니다. JSON은 객체와 배열인 두 가지 구조화된 유형을 나타냅니다.
이 튜토리얼은 다양한 방법을 사용하여 Java에서 JSON을 구문 분석하는 방법을 보여줍니다.
예제에서는 다음 JSON 파일로 작업합니다.
{
"firstName": "Ram",
"lastName": "Sharma",
"age": 26
},
"phoneNumbers": [
{
"type": "home",
"phone-number": "212 888-2365"
}
]
}
json.simple
라이브러리를 사용하여 Java에서 JSON 구문 분석
첫 번째 방법은 json.simple
라이브러리를 사용하여 Java에서 JSON을 구문 분석하는 것입니다. java.simple
라이브러리에서 org.json.simple.JSONArray
및 org.json.simple.JSONObject
라는 두 개의 클래스를 가져와야 합니다.
JSONArray
는 배열 형태의 요소를 구문 분석하는 데 도움이 되며 JSONObject
는 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
Ladt name is: Sharma
위의 예에서 우리는 이미 시스템에 있는 JSON 파일을 읽었고 그 파일에서 해당 파일의 이름과 성을 인쇄하고 있습니다.
여기서 org.json.simple.parser.*
에 있는 JSONParser().parse()
함수는 파일에서 JSON 텍스트를 구문 분석합니다. 여기에서 js.get()
메소드는 파일에서 firstName
및 lastName
에 대한 값을 가져옵니다.
org.json
라이브러리를 사용하여 Java에서 JSON 구문 분석
이 라이브러리는 파일에서 읽는 대신 JSON 문자열을 직접 읽는 정적 메서드를 제공합니다. getJSONObject
및 getJSONArray
메소드는 작업을 더 단순하게 만들고 사용자가 입력한 문자열에서 필요한 입력을 제공합니다. 또한 이전 예제에서와 같이 객체를 JSONObject
로 유형 변환할 필요가 없습니다.
아래 코드를 참조하십시오.
import org.json.JSONArray;
import org.json.JSONObject;
public class JSON2 {
static String json = "{\"contacDetails\": {\n" + // JSON text 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
gson
라이브러리를 사용하여 Java에서 JSON 구문 분석
이 라이브러리도 추가로 다운로드해야 합니다. gson
라이브러리에서 com.google.gson.JsonArray
, com.google.gson.JsonObject
및 com.google.gson.JsonParser
라는 세 가지 클래스를 가져와야 합니다.
정적 문자열과 파일을 모두 사용하여 JSON을 구문 분석할 수 있습니다. 입력을 받는 메서드 이름은 이전 이름과 약간 다릅니다. 객체 데이터를 가져오기 위해 getAsJsonObject()
를 사용하고 배열 입력에 대해 getAsJsonArray()
를 사용합니다.
아래 코드를 참조하십시오.
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class GsonMethod {
static String json = "{\"contacDetails\": {\n" + // JSON text 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 an object
JsonObject ob = new JsonParser().parse(json).getAsJsonObject();
// getting first and last name
String firstName = ob.getAsJsonObject("contacDetails").get("firstName");
String lastName = ob.getAsJsonObject("contacDetails").get("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.getAsJsonArray("phoneNumbers");
for (int i = 0; i < arr.length(); i++) {
String PhoneNumber = arr.getAsJsonObject(i).get("phone-number");
System.out.println(PhoneNumber);
}
}
}
출력:
FirstName Ram
LastName Sharma
212 888-2365
JsonPath
라이브러리를 사용하여 Java에서 JSON 구문 분석
이 라이브러리에서는 데이터 입력을 가져오기 위해 read()
메서드를 사용할 것입니다. JSON 텍스트를 호출하기 위해 여기에서 객체를 만들 필요가 없습니다. 이를 위해 com.jayway.jsonpath.JsonPath
클래스를 가져올 것입니다.
다음 예제에서는 이 방법을 보여줍니다.
import com.jayway.jsonpath.JsonPath;
public class PathMethod {
static String json = "{\"contacDetails\": {\n" + // JSON text 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) {
// getting input
String firstName = JsonPath.read(json, "$.contactDetails.firstName");
System.out.println("FirstName " + firstName);
String lastName = JsonPath.read(json, "$.contactDetails.lastName");
System.out.println("LastName " + lastName);
Integer phoneNumbers = JsonPath.read(json, "$.phoneNumbers.length()");
for (int i = 0; i < phoneNumbers; i++) {
String number = JsonPath.read(json, "$.phoneNumber[" + i + "].phone-number");
System.out.println(number);
}
}
}
출력:
FirstName Ram
LastName Sharma
212 888-2365