Parsen von JSON in Jackson mit einem Strom - /Objekt-Ansatz

Habe ich eine JSON-Datei die mehrere Arten.

Beispiel:

{
    "dog": {
        "owner" : "John Smith",
        "name" : "Rex",
        "toys" : {
            "chewtoy" : "5",
            "bone" : "1"
        }
    },
    "person": {
        "name" : "John Doe",
        "address" : "23 Somewhere Lane"
    }
    //Further examples of dogs and people, and a few other types.
}

Möchte ich parse diese in Objekte. dh. Ich will einen Hund-Objekt mit dem Besitzer/name/Spielzeug Attribute, und die person mit name/Adresse-Attribute und verwenden Jackson durch zu Lesen und erstellen von Objekten aus Ihnen heraus.

Die Reihenfolge ist wichtig - ich muss wissen, dass Rex kam vor John Doe, zum Beispiel. Ich würde es vorziehen, zu tun mit einem stream wie Ansatz (dh. Lesen und analysieren Rex in der Hund-Objekt, tun Sie etwas mit ihm, dann verwerfen Sie es, bewegen Sie dann auf, um zu John Doe). Also brauche ich einen stream-basierten Ansatz.

Ich kann nicht herausfinden, wie zu verwenden, sowohl die stream-API Lesen (to go through in Bestellung) und der ObjectMapper-Schnittstelle (in der Reihenfolge zu erstellen, die Java-Objekte aus der JSON), um dies zu erreichen.

  • (1) Ihre Frage über stream oder SAX-etwa bei der Analyse ist völlig gültig. +1. Aber (2) Ihre Daten nicht gut entwickelt, wenn die Bestellung Angelegenheiten, die in einem Wörterbuch. JSON-Wörterbücher sind grundsätzlich ungeordnet. Wenn Sie eine Bestellung, verwenden Sie ein array und der Kodierung der Art (Hund/Mensch) Informationen als ein Attribut als gut.
  • Hmm. Die Datenquelle ist wahrscheinlich unveränderlich (nicht unter meiner Kontrolle). Wenn Sie sagen, verwenden ein array und Kodierung der information, meinst du das manuell tun? (Lesen Sie durch alle tokens und erstellt die entsprechenden Objekte aufrufen der entsprechende setter) Oder gibt es eine Möglichkeit, dies zu tun mit Jackson?
  • Ich meinte die JSON-Daten sollten in der form eines Arrays, wenn die Angelegenheiten, mit der Arten codiert mit jedem Objekt. Aber wenn Sie keine Kontrolle über die JSON-Daten, dann nevermind-du wirst zu tun haben mit dem stream Parsen, wie Sie vorschlagen. 🙂 Ich habe nicht die Antwort auf deine eigentliche Frage, obwohl jemand anderes hier sicherlich. Aber wissen, dass, wer kam mit dieser JSON-format ist ein Spiel mit dem Feuer. Es ist sehr zerbrechlich, angewiesen auf die Reihenfolge von Schlüsseln in einem dictionary, ganz zu schweigen von den Schmerzen in den Arsch, es schafft für die Menschen (Sie) gibt, die versuchen, damit umzugehen-es geht gegen das Korn der meisten Werkzeuge.
  • Danke für die Antwort. In dem Fall, dass ich tun, um die Daten verändert, so dass die Objekte gespeichert, die als array, ist es dann auch möglich, eine Kombination stream/Objekt-mapper-parsing-Ansatz?
Schreibe einen Kommentar