Java MongoDB : Convert JSON data to DBObject
MongoDB comes with “com.mongodb.util.JSON” class to convert JSON data directly to a DBObject. For example, data represent in JSON format :
{ 'name' : 'mkyong', 'age' : 30 }
To convert it to DBObject, you can code like this :
DBObject dbObject = (DBObject) JSON.parse("{'name':'mkyong', 'age':30}");
Example
See a full example to convert above JSON data to a DBObject, and save it into MongoDB.
package com.mkyong.core; import java.net.UnknownHostException; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.util.JSON; /** * Java MongoDB : Convert JSON data to DBObject * */ public class App { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("yourdb"); DBCollection collection = db.getCollection("dummyColl"); // convert JSON to DBObject directly DBObject dbObject = (DBObject) JSON .parse("{'name':'mkyong', 'age':30}"); collection.insert(dbObject); DBCursor cursorDoc = collection.find(); while (cursorDoc.hasNext()) { System.out.println(cursorDoc.next()); } System.out.println("Done"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } }
Output
{ "_id" : { "$oid" : "4dc9ebb5237f275c2fe4959f"} , "name" : "mkyong" , "age" : 30} Done

The snippet
{ "_id" : { "$oid" , "4dc9ebb5237f275c2fe4959f"} }saved my day! (im using NoSQLUnit for integration tests)
thx a lot!
Nice article !!
When I try importing a date using the above function
{ 'name' : 'mkyong', 'age' : 30, 'DOB' : 2000-12-12 }The datatype by default is taken as string. How do I import dates directly from JSON ?
Any idea ?
Regds
AN
Hello. I have following method, I want find by id from table and get Book object
public Book getBookObject(Long bookId)
{
Book book = new Book();
BasicDBObject query = new BasicDBObject();
query.put(“bookId”, bookId);
DBCursor cursor = bookCollection.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close(); }
return book;
}
How can I assign cursor.next() result to my Book object?
@Model
public class Book
{
private Long bookId;
@Size(min = 1, max = 20)
private String name;
@Size(min = 1, max = 20)
private String author;
@Size(min = 1, max = 20)
private String language;
private int year;
///
After fin I get JSON object
INFO: { “_id” : { “$oid” : “50125127478556057fb20600″} , “bookId” : 18 , “name” : “Java one” , “year” : 11969 , “language” : “255″ , “author” : “5858″} and so? I need show it in the web page and update the document. Help
How can I convert from DBobject back to a java Object? With MappingMongoConverter? I can’t figure out the MappingContext argument to construct that converter.
Can I save not strict JSON as Object in this DB?
For example:
This code cause exception, but if to work with another tool for mongo – DB allow to save this objects.
Why java api not allow this and how can i solse this problem?