3

我遇到了以下问题。

我的后端(Java sevlet)从数据库返回来自 MongoDB 的单个记录/文档的所有字段。这个 JSON 字符串被发送到执行一些魔法的前端。

这是通过以下代码完成的:

public String getDocumentJSON(int id) {
    DBCollection collection = database.getCollection("People");
    BasicDBObject query = new BasicDBObject();
    query.put("id", id);
    DBCursor cur = collection.find(query);
    DBObject one = cur.next();  
    return JSON.serialize(one);
}

前端需要一个字段:photos[]

使用此字段创建新记录/文档。(这是一个带有照片文件名的数组)。较旧的记录/文档没有此字段,这会导致前端中断。

为了防止这种情况,我想photos[]在将它发送到前端之前将数组:添加到 JSON 中。但我不确定如何将此数组添加到 JSON。

最好我的代码会检查 JSON 或 DBObject 是否有该字段photos[],如果有,则什么也不做,如果它不包含该字段。然后添加。

前端只需要photos[]即使它是空的也没问题。

我宁愿在后端解决这个问题,而不是在前端解决这个问题。

4

2 回答 2

3

像这样的东西应该工作:

DBObject one = cur.next();  

if (one.get("photos") == null)
  one.put("photos", new Object[0]);

return JSON.serialize(one);
于 2012-08-27T06:10:31.533 回答
0

我需要做类似的事情,并发现接受答案的次要替代方法是使用JSONArray

one.put("photos", new JSONArray());
于 2015-10-20T15:33:11.917 回答