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[]、フロントエンドに送信する前に array: を 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 に答える