【发布时间】:2015-05-01 11:54:51
【问题描述】:
我有一个 java 应用程序,我想将 json 数据从 servlet 发送到 jsp。我使用 mongodb 作为 Json 的数据库和 Gson 库。
我是 Java 和 Mongo 的新手。
查询数据库的代码如下:
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB database = mongoClient.getDB("MyTestDatabase");
coll = database.getCollection("players");
BasicDBObject fields = new BasicDBObject();
fields.put("_id", 0);
fields.put("Incident Date", 1);
fields.put("Longitude", 1);
fields.put("Latitude", 1);
fields.put("Address", 1);
fields.put("Status", 1);
fields.put("Name", 1);
doc.put("Address", "Mumbai");
cursor = coll.find(doc,fields);
这是查询数据库后的结果
{ "_id" : { "$oid" : "5540cae37a104f6bbfe7c9f5"} , "Incident Date" : "30/4/2015" , "Longitude" : "77.61528809" , "Latitude" : "12.9245331" , "Address" : "Mumbai" , "Status" : "Ok" , "Name" : [ "1.ABC" , "2.XYZ" , "3.PQR"]}
我想要实现的是将上述结果转换为 JSON,并通过将结果解析为 json 来使用“事件日期”、“状态”等字段访问 JSON。我试图将原始结果解析为 json,但我认为它不像那样工作
这是我尝试过的。 1.将'cursor'转换为ArrayList
List<DBObject> myList = new ArrayList<DBObject>();
myList = cursor.toArray();
-
尝试将ArrayList转成JSON
JSON json =new JSON(); String serialize = json.serialize(cursor);
我尝试了以下代码,但出现此错误
JsonElement jelement = new JsonParser().parse(serialize);
System.out.println(jelement);
JsonObject jobject = jelement.getAsJsonObject();//error at this line
System.out.println(jobject);
Exception in thread "main" java.lang.IllegalStateException: Not a JSON Object: [{"_id":{"$oid":"5540cae37a104f6bbfe7c9f5"},"Incident Date":"30/4/2015","Longitude":"77.61528809","Latitude":"12.9245331","Address":"Mumbai","Status":"Ok","Culprits Name":["1.ABC","2.XYZ","3.PQR"]}]
at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:90)
谁能帮帮我?
【问题讨论】: