Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा में javax.json API का उपयोग करके मौजूदा JSON डेटा को कैसे अपडेट करें

JsonBuilderFactory इंटरफेस JsonObjectBuilder इंस्टेंस बनाने के लिए एक फैक्टरी है और JsonObjectBuilder स्क्रैच से JsonObject मॉडल्स बनाने के लिए एक बिल्डर है। यह इंटरफेस एक खाली JSON ऑब्जेक्ट मॉडल इनिशियलाइज़ करता है और ऑब्जेक्ट मॉडल में नाम/वैल्यू पेयर्स जोड़ने के लिए मेथड्स प्रदान करता है और परिणामी ऑब्जेक्ट को रिटर्न करता है। हम createObjectBuilder() मेथड का उपयोग करके एक JsonObjectBuilder इंस्टेंस बना सकते हैं जिसका उपयोग JsonObject बनाने के लिए किया जा सकता है।

सिंटैक्स

JsonObjectBuilder createObjectBuilder()

उदाहरण

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

public class UpdateExistingJsonTest {
    public static void main(String[] args) throws Exception {
        String jsonString = "{\"id\":\"115\", \"name\":\"Raja\", \"address\":[{\"area\":\"Madhapur\", \"city\":\"Hyderabad\"}]}";
        StringReader reader = new StringReader(jsonString);
        JsonReader jsonReader = Json.createReader(reader);
        System.out.println("Existing JSON: \n" + jsonString);
        
        StringWriter writer = new StringWriter();
        JsonWriter jsonWriter = Json.createWriter(writer);
        JsonObject jsonObject = jsonReader.readObject();
        JsonBuilderFactory jsonBuilderFactory = Json.createBuilderFactory(null);
        JsonObjectBuilder jsonObjectBuilder = jsonBuilderFactory.createObjectBuilder();
        
        for (String key : jsonObject.keySet()) {
            jsonObjectBuilder.add(key, jsonObject.get(key));
        }
        
        jsonObjectBuilder.add("Contact Number", "9959984000");
        jsonObjectBuilder.add("Country", "India");
        
        jsonObject = jsonObjectBuilder.build();
        jsonWriter.writeObject(jsonObject);
        System.out.println("new JSON: \n" + jsonObject);
    }
}

आउटपुट

Existing JSON:
{"id":"115", "name":"Raja", "address":[{"area":"Madhapur", "city":"Hyderabad"}]}
new JSON:
{"id":"115","name":"Raja","address":[{"area":"Madhapur","city":"Hyderabad"}],"Contact Number":"9959984000","Country":"India"}

चरण-दर-चरण प्रक्रिया

  1. पार्स करें: JsonReader.readObject() - JSON स्ट्रिंग को JsonObject में
  2. बिल्डर बनाएं: JsonBuilderFactory.createObjectBuilder()
  3. कॉपी करें: मौजूदा फील्ड्स को बिल्डर में जोड़ें
  4. मॉडिफाई करें: नए फील्ड्स जोड़ें/अपडेट करें/हटाएं
  5. बिल्ड करें: jsonObjectBuilder.build() - नया JsonObject बनाएं
  6. लिखें: JsonWriter.writeObject() - आउटपुट स्ट्रीम में लिखें

फील्ड अपडेट/हटाना

// फील्ड अपडेट करें
jsonObjectBuilder.add("name", "New Name"); // मौजूदा को ओवरराइट करता है

// फील्ड हटाएं - बिल्डर में नहीं जोड़ें (या remove() यदि उपलब्ध हो)
// JsonObjectBuilder इम्यूटेबल है, इसलिए फिल्टर करके पुनर्निर्माण करें
JsonObjectBuilder newBuilder = jsonBuilderFactory.createObjectBuilder();
for (String key : jsonObject.keySet()) {
    if (!key.equals("fieldToRemove")) {
        newBuilder.add(key, jsonObject.get(key));
    }
}

नेस्टेड ऑब्जेक्ट्स अपडेट करना

// नेस्टेड ऑब्जेक्ट अपडेट करें
JsonObjectBuilder addressBuilder = jsonBuilderFactory.createObjectBuilder();
JsonObject address = jsonObject.getJsonObject("address");
for (String key : address.keySet()) {
    addressBuilder.add(key, address.get(key));
}
addressBuilder.add("country", "India");

jsonObjectBuilder.add("address", addressBuilder.build());

निर्भरताएं (Maven)

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1.4</version>
</dependency>
// या
<dependency>
    <groupId>jakarta.json</groupId>
    <artifactId>jakarta.json-api</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>jakarta.json</artifactId>
    <version>2.0.1</version>
</dependency>

javax.json vs Jackson/Gson

विशेषता javax.json (JSR 374) Jackson/Gson
स्टैंडर्डJEE स्टैंडर्ड APIथर्ड-पार्टी लाइब्रेरीज
म्यूटेबिलिटीइम्यूटेबल (बिल्डर पैटर्न)म्यूटेबल ऑब्जेक्ट्स
फीचर्सबेसिकव्यापक
परफॉरमेंसमध्यमउच्च
एनोटेशन सपोर्टनहींहां
  1. - Java में Jackson का उपयोग करके JSON में फील्ड नाम को कैसे बदलें?

    Jackson एनोटेशन @JsonProperty का उपयोग सीरियलाइज़ेशन या डिसीरियलाइज़ेशन के दौरान किसी प्रॉपर्टी या मेथड पर JSON के लिए किया जाता है। यह एक वैकल्पिक name पैरामीटर लेता है जो उस मामले में उपयोगी होता है जब प्रॉपर्टी नाम JSON में key नाम से अलग होता है। डिफ़ॉल्ट रूप से, यदि key नाम प्रॉपर्टी नाम से मे

  1. - Java में JSON ऑब्जेक्ट को कैसे डिकोड करें?

    JSON एक हल्का, टेक्स्ट-आधारित और भाषा-स्वतंत्र डेटा एक्सचेंज फॉर्मेट है। JSON दो संरचित प्रकारों जैसे ऑब्जेक्ट्स और ऐरे को दर्शा सकता है। हम json.simple API से JSONObject और JSONArray का उपयोग करके JSON ऑब्जेक्ट को डिकोड कर सकते हैं। एक JSONObject java.util.Map की तरह काम करता है जबकि JSONArray java

  1. - Java में JSON फाइल कैसे पढ़ें?

    JSON व्यापक रूप से उपयोग किए जाने वाले डेटा-इंटरचेंज फॉर्मेट्स में से एक है और यह हल्का और भाषा-स्वतंत्र है। json.simple एक हल्की JSON प्रोसेसिंग लाइब्रेरी है जिसका उपयोग JSON फाइल्स पढ़ने और लिखने के लिए किया जा सकता है और इसका उपयोग JSON टेक्स्ट को एन्कोड या डिकोड करने के लिए किया जा सकता है और यह