Bson - Wie konvertieren von JSON-List<Dokument> Liste<Dokument> für JSON?

Ich bin mit Java-Treiber 3.0 mit MongoDB, um zu senden JSONs über einen webservice.

Wenn ich will, um zu konvertieren ein Dokument-Objekt (org.bson.Dokument) zu JSON verwende ich obj.toJson(), und wenn ich konvertieren wollen JSON, um ein Document-Objekt, verwende ich Document.parse(json).

Aber wenn ich den Umgang mit Listen der Dokumente (dargestellt wie diese in JSON:[{"field1":1, ...}, {"field1":2, ...}]), habe ich nicht herausfinden können, auf eine saubere Art und Weise zu tun, diese Umbauten.

Bisher habe ich mit diesen "hacks":

  • Aus der Liste zu JSON: ich füge die Liste der Dokumente, die als Wert ein Feld namens "Liste" in einem größeren Dokument. Ich rechne dieses große Dokument, JSON, und entfernen was ich nicht brauche aus den ermittelten String.
    public String toJson(List<Document> docs){
        Document doc = new Document("list", docs);
        String json = doc.toJson();
        return json.substring(json.indexOf(":")+2, json.length()-1);
    }
  • Aus der JSON-Liste: ich Tue das Gegenteil, indem diese "Liste" - Feld, um die JSON-Konvertierung zu einem Dokument, und immer nur der Wert dieses Feldes aus dem Dokument.
    public static List<Document> toListOfDocuments(String json){
        Document doc = Document.parse("{ \"list\":"+json+"}");
        Object list = doc.get("list");
        if(list instanceof List<?>) {
            return (List<Document>) doc.get("list");
        }
        return null ;
    }

Ich habe auch versucht, eine andere zu verwenden JSON serializer (ich habe Google ein), aber es nicht das gleiche Ergebnis wie die built-in toJson() Methode aus dem Document-Objekt, besonders für die "_id" - Feld oder dem Zeitstempel.

Gibt es eine saubere Art und Weise, dies zu tun?

InformationsquelleAutor Thematrixme | 2015-07-13

Schreibe einen Kommentar