RESTful服务无法返回正确的JSON格式

时间:2015-10-04 16:42:52

标签: java json mongodb rest

我的资源如下,我试图以json格式返回mongo表中的所有文件。

@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服务的新手。

2 个答案:

答案 0 :(得分:1)

你应该这样做:

public String getMongoObject() throws Exception {
    .......
    .......
    return token.toString();
}

来自docs

<强>的toString

public String toString()
  

返回此对象的JSON序列化

答案 1 :(得分:0)

试试这个 我使用GSON从BasicDBObject转换为我自己的POJO,即TinyBlogDBObject

TinyBlogDBObject obj = convertJSONToPojo(cursor.next()。toString()); private static TinyBlogDBObject convertJSONToPojo(String json){

Type type = new TypeToken< TinyBlogDBObject >(){}.getType();

return new Gson().fromJson(json, type);

}