java - JSON स्ट्रिंग से बीएसओएन ऑब्जेक्ट बनाना




mongodb bson (6)

... और, 3.0.0 के बाद से, आप यह कर सकते हैं:

import org.bson.Document;

final Document doc = new Document("myKey", "myValue");
final String jsonString = doc.toJson();
final Document doc = Document.parse(jsonString);

आधिकारिक दस्तावेज़:

मेरे पास जावा ऐप है जो बाहरी ऐप से डेटा लेता है। आने वाले जेएसओएन स्ट्रिंग्स में हैं। मैं स्ट्रिंग्स को पार्स करना और बीएसओएन ऑब्जेक्ट्स बनाना चाहता हूं।

दुर्भाग्यपूर्ण मैं जावा के बीएसओएन कार्यान्वयन में इसके लिए एपीआई नहीं ढूंढ सकता।

क्या मैंने जीएसओएन की तरह बाहरी पार्सर का उपयोग किया है?


JSON स्ट्रिंग को Map में पार्स करने के लिए JSON लाइब्रेरी का उपयोग करने का सबसे आसान तरीका प्रतीत होता है और फिर उन मानों को BSONObject में रखने के लिए putAll विधि का उपयोग करें।

यह उत्तर दिखाता है कि Map में JSON स्ट्रिंग को पार्स करने के लिए Jackson का उपयोग कैसे करें।


आपको bson4jackson प्रोजेक्ट में दिलचस्पी हो सकती है, जो आपको बीएसओएन के साथ काम करने के लिए जैक्सन डेटा बाइंडिंग का उपयोग करने की अनुमति देता है (बीएसओएन से पीओजेओ बनाएं, बीएसओएन के रूप में लिखें) - खासकर जब जैक्सन जेएसओएन के साथ भी काम करता है। तो यह आपके जैसे रूपांतरण की अनुमति देगा, बस विभिन्न ऑब्जेक्टमैपर इंस्टेंसस्टेस का उपयोग करें (जो JSON के साथ काम करता है, अन्य बीएसओएन के साथ काम करता है)।

जैक्सन के साथ आप या तो पूर्ण पीओजेओ (अपनी इच्छित संरचना घोषित करें) या सरल मानचित्र, सूचियों आदि के साथ काम कर सकते हैं। आपको केवल डेटा को पढ़ने के दौरान बाध्य करने के लिए टाइप करने की आवश्यकता है (लिखते समय, टाइप आपके द्वारा पारित वस्तु द्वारा परिभाषित किया जाता है)।


आपको https://github.com/mongodb/mongo/blob/master/src/mongo/db/jsobj.cpp के स्रोत कोड में आपके प्रश्न का उत्तर मिलेगा जिसमें JSON रूपांतरण के लिए बीएसओएन है।

असल में, सामान की तरह

  • ObjectId("XXX") -> { "$oid" : "XXX" }
  • /XXX/gi -> { "$regex" : "XXX", "$options" : "gi" }

और इसी तरह...


मैं BasicDBObject के toJson () और पार्स (स्ट्रिंग) विधियों का उपयोग करने का सुझाव दूंगा, क्योंकि JSON उपयोगिता वर्ग @Depricated किया गया है।

import com.mongodb.BasicDBObject;

public static BasicDBObject makeBsonObject(String json) {
    return BasicDBObject.parse(json);
}

public static String makeJsonObject(BasicDBObject dbObj) {
    return dbObj.toJson();
}

स्ट्रिंग जेसन को बीएसओ में कनवर्ट करने के लिए, करें:

import org.bson.BasicBSONEncoder;
import org.bson.BSONObject;

BSONObject bson = (BSONObject)com.mongodb.util.JSON.parse(string_json);
BasicBSONEncoder encoder = new BasicBSONEncoder();
byte[] bson_byte = encoder.encode(bson);

एक बासन को जेसन में बदलने के लिए, करें:

import org.bson.BasicBSONDecoder;
import org.bson.BSONObject;

BasicBSONDecoder decoder = new BasicBSONDecoder();
BSONObject bsonObject = decoder.readObject(out);
String json_string = bsonObject.toString();






bson