2015-10-04 6 views
1

Мой ресурс задан следующим образом. Я пытаюсь вернуть все документы в таблице mongo в формате json.Служба RESTful не может вернуть правильный формат 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-сервисах.

+0

вы пробовали 'return.toString()' с 'String' как возвращение типа' getMongoObject() '. См. [API Docs of BasicDBObject] (http://api.mongodb.org/java/2.6/com/mongodb/BasicDBObject.html#toString%28%29) – thegauravmahawar

+0

Вы имеете в виду public String getMongoObject() {.... return token.toString();}? –

+0

Теперь, когда я попробовал, он работает. Вау, как я это пропустил. Спасибо за помощь, это был довольно глупый вопрос –

ответ

1

Вы должны сделать:

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

От docs:

ToString

public String toString() 

Возвращает JSON сериализации этого объекта

0

Попробуйте я использую GSON конвертировать из BasicDBObject в мой POJO, который TinyBlogDBObject

TinyBlogDBObject OBJ = convertJSONToPojo (cursor.next() ToString().); частных статических TinyBlogDBObject convertJSONToPojo (String JSON) {

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

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

}

Смежные вопросы