2015-05-28 15 views
5

Sono nuovo a JAVA e MONGODB e ho imparato entrambi a cercare di capire se queste tecnologie avrebbero soddisfatto i miei requisiti per un prodotto.Parse JSON in un documento MONGODB

Attualmente sono bloccato in un punto in cui non sono in grado di inserire documenti (record) da JAVA nella mia raccolta MONGODB.

Sto usando il nuovo MONGODBversion 3.0.

Codice finora

MongoCollection<Document> coll = db.getCollection("Collection"); 
String json = "{'class':'Class10', 'student':{'name':'Alpha', 'sex':'Female'}, {'name':'Bravo', 'sex':'Male'}}"; 

ho trovato il codice per convertire questo a un tipo DBObject.

DBObject dbObject = (DBObject)JSON.parse(json); 

Ma credo che la nuova versione di MONGODB non ha il metodo di inserimento, ma ha invece il insertOne method.

coll.insertOne() richiede che l'input sia nel formato Documento e non accetta il formato DBObject.

coll.insertOne((Document) dbObject); 

dà l'errore

com.mongodb.BasicDBObject cannot be cast to org.bson.Document 

Qualcuno mi può aiutare con il casting di tipo giusto e darmi un link dove avrei potuto trovare e imparare la stessa cosa?

Saluti.

+0

Penso problema con questo coll.insertOne ((Documento) DBOBJECT) ',' si può controllare questo coll.insertOne (DBOBJECT) ',' senza fusione 'Documento' e quindi inserire. – Yogesh

+0

Controlla questo link http://www.mkyong.com/mongodb/java-mongodb-convert-json-data-to-dbobject/ – Ranjitsinh

+1

Se usi DBCollection invece di MongoCollection <>, puoi usare insert (DBObject) su di esso . –

risposta

9

Utilizzare il metodo statico parse(String json) definito nella classe Documento.

+2

Durante l'analisi di una stringa JSON, l'errore generato è org.bson.json.JsonParseException: numero JSON non valido – dexter

5
  • Il problema è che si sta utilizzando una versione precedente (BasicDBObject) che non è compatibile con la versione 3.0.

  • Ma c'è un modo per 2.0 agli utenti di utilizzare il sovraccarico BasicDBObject.An del metodo GetCollection permette ai clienti di specificare una classe diversa per rappresentare documenti BSON.

Il seguente codice deve funzionare per voi.

MongoCollection<BasicDBObject> coll = db.getCollection("Collection", BasicDBObject.class); 

coll.insertOne(dbObject); 
0

Ho usato google gson per convertire pojo in json, e questo è un lavoro perfetto.

private final MongoCollection<Document> collection; 

//my save 
    String json = gson.toJson(data);//data is User DTO, just pojo! 
    BasicDBObject document = (BasicDBObject) JSON.parse(json); 
    collection.insertOne(new Document(document)); 

Java MongoDB versione del driver è 3.4.2