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"}
चरण-दर-चरण प्रक्रिया
- पार्स करें: JsonReader.readObject() - JSON स्ट्रिंग को JsonObject में
- बिल्डर बनाएं: JsonBuilderFactory.createObjectBuilder()
- कॉपी करें: मौजूदा फील्ड्स को बिल्डर में जोड़ें
- मॉडिफाई करें: नए फील्ड्स जोड़ें/अपडेट करें/हटाएं
- बिल्ड करें: jsonObjectBuilder.build() - नया JsonObject बनाएं
- लिखें: 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 | थर्ड-पार्टी लाइब्रेरीज |
| म्यूटेबिलिटी | इम्यूटेबल (बिल्डर पैटर्न) | म्यूटेबल ऑब्जेक्ट्स |
| फीचर्स | बेसिक | व्यापक |
| परफॉरमेंस | मध्यम | उच्च |
| एनोटेशन सपोर्ट | नहीं | हां |