Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีแยก JSON ใน Java

ในบทช่วยสอนนี้ เราจะมาดูวิธีแยก JSON ใน Java โดยใช้ไลบรารีต่างๆ

JSON ย่อมาจาก JavaScript Object Notation และอิงตามชุดย่อยของ JavaScript

เป็นรูปแบบการแลกเปลี่ยนข้อมูล มีการใช้กันอย่างแพร่หลายในการเขียนโปรแกรมเว็บ ที่นี่เราจะแสดงวิธีแยก JSON ใน Java โดยใช้ org.json ห้องสมุด

ออบเจ็กต์ JSON คือชุดของคู่คีย์/ค่าที่ไม่เรียงลำดับ อาร์เรย์ JSON คือชุดของค่าที่เรียงลำดับ ค่าเหล่านี้อาจเป็นออบเจ็กต์หรืออาร์เรย์

เราจะแยกวิเคราะห์ JSON นี้เป็นตัวอย่างเพื่อดึงค่าสำหรับ pageNamepagePic และ 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"
            }
    ]
}

แยกวิเคราะห์ JSON โดยใช้ org.json

ในการใช้ org.json เพื่อแยก JSON ใน Java คุณต้องเพิ่มไลบรารีเป็นการพึ่งพา สามารถดึงข้อมูลจากที่เก็บ 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 สิ่งนี้ถูกละเว้นจากโค้ดด้านบนเพื่อความชัดเจน

ขั้นแรก เราต้องแปลงสตริง JSON เป็น JSON Object โดยใช้คลาส JSONObject

นอกจากนี้ โปรดทราบว่า “pageInfo” เป็นออบเจ็กต์ JSON ดังนั้นเราจึงใช้วิธี getJSONObject

ในทำนองเดียวกัน “โพสต์” เป็นอาร์เรย์ JSON ดังนั้นเราจึงต้องใช้เมธอด getJSONArray

ที่เกี่ยวข้อง:

  • วิธีการแปลง Java Object เป็น JSON
  • วิธีการแปลง Java Map เป็น JSON
  • วิธีเข้ารหัสและถอดรหัส JSON

แยกวิเคราะห์ JSON โดยใช้ Gson

ในการใช้ Gson เพื่อแยกวิเคราะห์ JSON ใน Java คุณต้องเพิ่มไลบรารีเป็นการพึ่งพา คุณสามารถรับเวอร์ชันล่าสุดได้จากที่เก็บ 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

แยกวิเคราะห์ JSON โดยใช้ JsonPATH

ตัวอย่าง 2 ตัวอย่างข้างต้นต้องการการดีซีเรียลไลซ์เซชันของ JSON อย่างสมบูรณ์ในออบเจ็กต์ Java ก่อนเข้าถึงค่าในคุณสมบัติที่สนใจ อีกทางเลือกหนึ่งที่ไม่ไปเส้นทางนี้คือการใช้ JsonPATH ซึ่งเหมือนกับ XPath สำหรับ JSON และอนุญาตให้สำรวจวัตถุ JSON ได้

เช่นเคย คุณต้องเพิ่ม 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);
        }
    }
}