Ứng dụng của tôi sử dụng các đối tượng JSON rất nhiều (org.json.JSONArray và bạn bè). Cách hiệu quả nhất để lưu trữ chúng vào Mongo DBObjects để chúng có thể được truy vấn là gì? BasicDBObject không thể tuần tự hóa một JSONArray - dường như không có khả năng tương tác giữa hai cấu trúc phân cấp này.Sử dụng JSON với MongoDB?
Trả lời
OK nó dường như không có khả năng tương tác, vì vậy tôi cuộn của riêng tôi. Busywork để có được xung quanh các loại hệ thống:
public class Util {
public static DBObject encode(JSONArray a) {
BasicDBList result = new BasicDBList();
try {
for (int i = 0; i < a.length(); ++i) {
Object o = a.get(i);
if (o instanceof JSONObject) {
result.add(encode((JSONObject)o));
} else if (o instanceof JSONArray) {
result.add(encode((JSONArray)o));
} else {
result.add(o);
}
}
return result;
} catch (JSONException je) {
return null;
}
}
public static DBObject encode(JSONObject o) {
BasicDBObject result = new BasicDBObject();
try {
Iterator i = o.keys();
while (i.hasNext()) {
String k = (String)i.next();
Object v = o.get(k);
if (v instanceof JSONArray) {
result.put(k, encode((JSONArray)v));
} else if (v instanceof JSONObject) {
result.put(k, encode((JSONObject)v));
} else {
result.put(k, v);
}
}
return result;
} catch (JSONException je) {
return null;
}
}
}
Tôi không biết về trình điều khiển mongo java, nhưng trong c# mongo driver có lớp BsonSerializer. Bạn có thể sử dụng nó như đoạn mã sau:
var q = BsonSerializer.Deserialize<MyDocument>("{ jsonValueName:jsonValue }");
plz kiểm tra mongo-java-driver, tôi cảm ơn nó nên chứa các cơ sở tương tự
cũng nhìn vào bson4jackson
com.mongodb.util.JSON có một phương pháp để phân tích một chuỗi JSON thành DBObject. JSONCallback mặc định sẽ trả về BasicDBObject hoặc BasicDBList theo chuỗi đầu vào.
Object jsonObj = ...; //any of your org.json objects
Object o = com.mongodb.util.JSON.parse(jsonObj.toString());
DBObject dbObj = (DBObject) o;
Thao tác này và đặt câu hỏi là tại sao người Mongo quyết định có kiểu trả về đối tượng thay vì DBObject: có ai biết không?
Một giải pháp thay thế tốt, nếu bạn có nhiều JSON trong ứng dụng của mình, sẽ sử dụng Jackson cho (de) serialization.
- 1. MongoDB: BSON đến JSON
- 2. MongoDB PHP sử dụng $ in với mảng
- 3. Middleware cho MongoDB hoặc CouchDB với jQuery Ajax/JSON frontend
- 4. mongodb sử dụng cpu cao
- 5. cách nhập tệp json trong mongodb?
- 6. Làm thế nào tôi có thể sử dụng Python để chuyển bsondump của MongoDB thành JSON?
- 7. Đường ray: Lưu trữ JSON trong MongoDB
- 8. CouchDB vs MongoDB (sử dụng bộ nhớ)
- 9. Cách sử dụng định dạng JSON với ActiveResource của Ruby?
- 10. Làm thế nào để sử dụng JSON với Jquery?
- 11. Sử dụng Enums trong khi phân tích JSON với GSON
- 12. MongoDB + Java - phân tích cú pháp JSON qua com.mongodb.util.JSON.parse
- 13. An toàn Sử dụng JSON với html bên trong JSON trong Mẫu Django
- 14. Chèn JSON vào MongoDb trực tiếp từ PHP
- 15. Các trường được lồng với mongodb
- 16. vấn đề với việc sử dụng thư viện jackson-json khi sử dụng Proguard
- 17. Deserialize JSON vào từ điển sử dụng LINQ to JSON
- 18. MongoDB tương đương với SQL "TOP"
- 19. Phân trang với MongoDB
- 20. Ứng dụng GIS với các bản đồ django và google bằng cách sử dụng mongodb
- 21. Phi tiêu với MongoDB
- 22. JSON :: XS "Cách sử dụng" croak
- 23. Mã hóa JSON lạ sử dụng json_encode
- 24. AutoComplete jQuery dữ liệu Sử dụng JSON
- 25. Sử dụng mẫu JSON trong Chơi 2.0
- 26. Sử dụng Yêu cầu POST JSON
- 27. Cách sử dụng tệp JSON trong javascript
- 28. C# để JSON serialization sử dụng JSON.Net
- 29. Sử dụng RegEx trong Lược đồ JSON
- 30. Populating Bảng Layout sử dụng JSON Chuỗi
Có, tôi có thể tuần tự hóa thành một chuỗi và deserialize chuỗi, nhưng tôi đã cố gắng để interoperate các đối tượng bản địa. Cảm ơn mặc dù. – Simon