Mi aplicación utiliza mucho los objetos JSON (org.json.JSONArray y amigos). ¿Cuál es la forma más eficiente de almacenar estos en Mongo DBObjects para que puedan ser consultados? BasicDBObject no puede serializar un JSONArray; parece que no hay interoperabilidad entre estas dos jerarquías.¿Cómo usar JSON con MongoDB?
Respuesta
bien parece que no hay interoperabilidad, así que rodó el mío. Busywork de moverse por el sistema de tipos:
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;
}
}
}
no sé sobre el controlador de java mongo, pero en c# mongo driver tiene la clase BsonSerializer. Se puede utilizar como código siguiente:
var q = BsonSerializer.Deserialize<MyDocument>("{ jsonValueName:jsonValue }");
cheque del PLZ mongo-java-driver, agradezco que debe contener las mismas instalaciones
también mira bson4jackson
com.mongodb.util.JSON tiene un método para analizar una cadena JSON en dbobject. La JSONCallback predeterminada devolverá un BasicDBObject o BasicDBList de acuerdo con la cadena de entrada.
Object jsonObj = ...; //any of your org.json objects
Object o = com.mongodb.util.JSON.parse(jsonObj.toString());
DBObject dbObj = (DBObject) o;
Esto funciona, y lanza la pregunta de por qué la gente Mongo decidido tener un objeto tipo de retorno en lugar de un dbobject: ¿alguien sabe?
Una buena alternativa, si tiene una gran cantidad de JSON en su aplicación, sería usar Jackson para la (de) serialización.
- 1. ¿Cómo usar JSON con Jquery?
- 2. MongoDB: BSON a JSON
- 3. ¿Cómo usar JSON-CPP?
- 4. Rieles: Almacenar JSON en MongoDB
- 5. Middleware para MongoDB o CouchDB con jQuery Ajax/JSON frontend
- 6. ¿Cómo puedo usar expresiones regulares con Mongodb ODM de Doctrine?
- 7. ¿Cómo puedo usar Python para transformar el bsondump de MongoDB en JSON?
- 8. Inserte JSON en MongoDb directamente desde PHP
- 9. Cómo validar JSON con Jackson JSON
- 10. ¿Cómo convierto la consulta de MongoDB en JSON?
- 11. ID únicos con mongodb
- 12. Cómo usar Ajax.BeginForm MVC helper con resultado JSON?
- 13. Cómo seleccionar subdocumentos con MongoDB
- 14. Cómo "Agrupar por" con MongoDB
- 15. Usar una matriz JSON con objetos con javascript
- 16. ¿Cuál es la mejor manera de usar mongoDB con node.js?
- 17. Cómo usar un archivo JSON en javascript
- 18. ¿La mejor manera de usar MongoDB con Node.js?
- 19. ¿Cómo usar una cadena literal JSON?
- 20. ¿Cómo usar jQuery para paginar datos JSON?
- 21. ¿Cómo usar WebClient para la serialización JSON?
- 22. A granel cargando MongoDB desde el archivo JSON con una serie de objetos
- 23. cómo usar jsonbuilder con colecciones?
- 24. MongoDB + Java - analizando JSON a través de com.mongodb.util.JSON.parse
- 25. Hibernate con MongoDB
- 26. ¿Cómo crear JSON Rest API con Happstack? Cuerpo JSON?
- 27. Generar fáciles de usar identificadores en MongoDB
- 28. Unidades para usar para maxdistance y MongoDB?
- 29. ¿Cómo usar RSpec con JBuilder?
- 30. ¿Cómo puedo usar un script para crear usuarios en mongodb?
Sí, podría serializar una cadena y deserializar la cadena, pero estaba tratando de interoperar con los objetos nativos. Gracias sin embargo. – Simon