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

วิธีดึงค่าของคีย์โดยใช้ JsonPointer ใน Java

JSON Pointer เป็นมาตรฐานที่กำหนด ไวยากรณ์สตริง เพื่อเข้าถึงค่าของคีย์เฉพาะในเอกสาร JSON อินสแตนซ์ของ JSON Pointer สร้างได้โดยการเรียกเมธอดสแตติก createPointer() ของคลาส Json ใน JSON Pointer ทุกไวยากรณ์สตริงจะนำหน้าด้วย "/" เราสามารถดึงค่าของคีย์ได้โดยการเรียกเมธอด getValue() บนอ็อบเจกต์ JsonPointer

ไฟล์ JSON

วิธีดึงค่าของคีย์โดยใช้ JsonPointer ใน Java

ตัวอย่างโค้ด

import javax.json.*;
import java.io.*;

public class JsonPointerTest {
    public static void main(String[] args) throws Exception {
        JsonReader jsonReader = Json.createReader(new FileReader("simple.json"));
        JsonStructure jsonStructure = jsonReader.read();
        
        JsonPointer jsonPointer1 = Json.createPointer("/firstName");
        JsonString jsonString = (JsonString) jsonPointer1.getValue(jsonStructure);
        System.out.println("First Name: " + jsonString.getString()); // แสดงชื่อ
        
        JsonPointer jsonPointer2 = Json.createPointer("/phoneNumbers");
        JsonArray array = (JsonArray) jsonPointer2.getValue(jsonStructure);
        System.out.println("Phone Numbers:");
        for (JsonValue value : array) {
            JsonObject objValue = (JsonObject) value;
            System.out.println(objValue.toString()); // แสดงหมายเลขโทรศัพท์
        }
        
        JsonPointer jsonPointer3 = Json.createPointer("/phoneNumbers/1");
        JsonObject jsonObject1 = (JsonObject) jsonPointer3.getValue(jsonStructure);
        System.out.println("Home: " + jsonObject1.toString()); // แสดงเบอร์บ้าน
        
        JsonPointer jsonPointer4 = Json.createPointer("");
        JsonObject jsonObject2 = (JsonObject) jsonPointer4.getValue(jsonStructure);
        System.out.println("JSON:\n" + jsonObject2.toString()); // แสดงโครงสร้าง JSON ทั้งหมด
        
        jsonReader.close();
    }
}

ผลลัพธ์

First Name: Raja
Phone Numbers:
{"Mobile":"9959984000"}
{"Home":"0403758000"}
Home: {"Home":"0403758000"}
JSON:
{"firstName":"Raja","lastName":"Ramesh","age":30,"streetAddress":"Madhapur","city":"Hyderabad","state":"Telangana","phoneNumbers":[{"Mobile":"9959984000"},{"Home":"0403758000"}]}