Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 JSON을 구문 분석하는 방법

이 튜토리얼에서는 다른 라이브러리를 사용하여 Java에서 JSON을 구문 분석하는 방법을 살펴볼 것입니다.

JSON은 JavaScript Object Notation의 약자이며 JavaScript의 하위 집합을 기반으로 합니다.

데이터 교환 형식으로 웹 프로그래밍에서 널리 사용됩니다. 여기에서는 org.json을 사용하여 자바에서 JSON을 파싱하는 방법을 보여줍니다. 라이브러리.

JSON 객체는 순서가 지정되지 않은 키/값 쌍의 집합입니다. JSON 배열은 정렬된 값 모음입니다. 값 자체는 개체 또는 배열일 수 있습니다.

pageName의 값을 검색하기 위한 예로 이 JSON을 파싱합니다. , pagePic 및 post_id

{
    "pageInfo": {
            "pageName": "Homepage",
            "logo": "https://www.example.com/logo.jpg"
    },
    "posts": [
            {
                "post_id": "0123456789",
                "actor_id": "1001",
                "author_name": "Jane Doe",
                "post_title": "How to parse JSON in Java",
                "comments": [],
                "time_of_post": "1234567890"
            }
    ]
}

org.json을 사용하여 JSON 구문 분석

org.json을 사용하여 Java에서 JSON을 구문 분석하려면 라이브러리를 종속성으로 추가해야 합니다. 이것은 Maven 저장소에서 가져올 수 있습니다.

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

public class ParseJSON {
    static String json = "...";
    public static void main(String[] args) {
        JSONObject obj = new JSONObject(json);
        String pageName = obj.getJSONObject("pageInfo").getString("pageName");

        System.out.println(pageName);

        JSONArray arr = obj.getJSONArray("posts");
        for (int i = 0; i < arr.length(); i++) {
            String post_id = arr.getJSONObject(i).getString("post_id");
            System.out.println(post_id);
        }
    }
}

주의 ... JSON 문자열로 대체해야 합니다. 이것은 명확성을 위해 위의 코드에서 생략되었습니다.

먼저 JSONObject 클래스를 사용하여 JSON 문자열을 JSON Object로 변환해야 합니다.

또한 "pageInfo"는 JSON Object이므로 getJSONObject 메소드를 사용합니다.

마찬가지로 "posts"는 JSON Array이므로 getJSONArray 메소드를 사용해야 합니다.

관련:

  • Java 객체를 JSON으로 변환하는 방법
  • Java 지도를 JSON으로 변환하는 방법
  • JSON 인코딩 및 디코딩 방법

Gson을 사용하여 JSON 구문 분석

Gson을 사용하여 Java에서 JSON을 구문 분석하려면 라이브러리를 종속성으로 추가해야 합니다. Maven 저장소에서 최신 버전을 얻을 수 있습니다.

아래 예시는 위의 JSON을 Gson으로 파싱하는 방법을 보여줍니다.

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class ParseJSON {
    static String json = "...";
    public static void main(String[] args) {
        JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();

        String pageName = jsonObject.getAsJsonObject("pageInfo").get("pageName").getAsString();
        System.out.println(pageName);

        JsonArray arr = jsonObject.getAsJsonArray("posts");
        for (int i = 0; i < arr.size(); i++) {
            String post_id = arr.get(i).getAsJsonObject().get("post_id").getAsString();
            System.out.println(post_id);
        }
    }
}

이전 예와 마찬가지로 ... JSON 문자열로 대체해야 합니다.

JsonPATH를 사용하여 JSON 구문 분석

위의 두 예에서는 관심 속성의 값에 액세스하기 전에 JSON을 자바 객체로 완전히 역직렬화해야 합니다. 이 경로를 사용하지 않는 또 다른 대안은 JSON용 XPath와 유사하고 JSON 개체의 순회를 허용하는 JsonPATH를 사용하는 것입니다.

이전과 마찬가지로 JsonPATH를 종속성으로 추가해야 하며 이는 Maven 저장소에서 가져올 수 있습니다.

예를 들어 위의 JSON을 구문 분석하려면 다음을 사용할 수 있습니다.

import com.jayway.jsonpath.JsonPath;

public class ParseJSON {
    static String json = "...";
    public static void main(String[] args) {
        String pageName = JsonPath.read(json, "$.pageInfo.pageName");
        System.out.println(pageName);

        Integer posts = JsonPath.read(json, "$.posts.length()");

        for(int i=0; i < posts; i++) {
            String post_id = JsonPath.read(json, "$.posts[" + i + "].post_id");
            System.out.println(post_id);
        }
    }
}