REST风格的服务无法返回正确的JSON格式
问题描述:
我的资源如下给出,我试图以json格式返回mongo表中的所有文档。REST风格的服务无法返回正确的JSON格式
@Path("/myresource")
@GET
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<DBObject> getMongoObject() throws Exception {
MongoClient mongoClient = new MongoClient("localhost" , 27017);
DB db = mongoClient.getDB("zapshop");
DBCollection collection = db.getCollection("admin");
DBCursor cursor = collection.find();
DBObject object = cursor.next();
ArrayList<DBObject> token = new ArrayList<DBObject>();
token.add(object);
while (cursor.hasNext()) {
object = cursor.next();
token.add(object);
//System.out.println(token);
}
if (object == null) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
return token;
}
这将返回JSON包含:
[{"type":"dbObject"},{"type":"dbObject"}]
但是,当我在控制台打印出令牌它包含正确的集合,它是:
{
"_id" : ObjectId("55fc4844f7aea67825dae9a1"),
"login_id" : "sam",
"password" : "***"
}
{
"_id" : ObjectId("56110506d7ca91f604065fdc"),
"login_id" : "bam",
"password" : "***"
}
这是我想要什么它返回。我哪里错了,请尝试提供一个示例,因为我是RESTful服务的新手。
答
你应该这样做:
public String getMongoObject() throws Exception {
.......
.......
return token.toString();
}
从docs:
的toString
public String toString()
返回此对象
答
试试这个 我使用GSON从BasicDBObject转换成我自己的POJO这是TinyBlogDBObject
TinyBlogDBObject OBJ = convertJSONToPojo(cursor.next()的toString()); 私有静态TinyBlogDBObject convertJSONToPojo(JSON字符串){
Type type = new TypeToken<TinyBlogDBObject>(){}.getType();
return new Gson().fromJson(json, type);
}
有一个JSON序列化你试过'return.toString()'含)'String'的返回类型getMongoObject的'('。请参阅[BasicDBObject的API文档](http://api.mongodb.org/java/2.6/com/mongodb/BasicDBObject.html#toString%28%29) – thegauravmahawar
您的意思是public String getMongoObject(){.... return token.toString();}? –
现在,我试了一下,它的工作原理。哇,我怎么错过了。谢谢你的帮助,这是一个相当愚蠢的问题 –