[JAVA] So montieren Sie JSON direkt in Jackson

Einführung

Gelegentlich schreibe ich Java-Code ... (Nein, es ist die Hauptsprache in meinem Unternehmen), also werde ich veröffentlichen, was ich in dem Fall recherchiert habe, für den ich derzeit verantwortlich bin.

Verwenden Sie das Spring Framework? In letzter Zeit wird die Serverseite häufig mit Node.js, Ruby usw. erstellt, und die PaaS-Seite verfügt über einen Mechanismus, mit dem Web-APIs problemlos bereitgestellt werden können. Daher ist es recht selten, sie in Java zu implementieren. Ich frage mich, aber ich bin immer noch aktiv, also codiere ich immer noch Java im aktuellen Projekt.

Diesmal handelt es sich um eine etwas ungewöhnliche Spezifikation. Anstatt den von der im Spring Framework erstellten Web-API empfangenen JSON auf POJO abzubilden, haben wir beschlossen, ihn unverändert (dynamisch) zu verarbeiten und mit einer anderen Web-API zu verbinden. Als ich mir dann Javadoc ansah, fragte ich mich, wie ich JSON ohne POJO in Jackson hätte erstellen sollen, und stellte fest, dass ich Folgendes tun sollte.

Erstellen Sie einen ObjectNode in Jackson

Es gab eine Methode namens "createObjectNode ()" in "ObjectMapper". Sie können damit ein leeres JSON-Objekt erstellen.

Verwenden Sie put (fieldName, value), um diesem Objekt einen einfachen Wert hinzuzufügen. Verwenden Sie beim Hinzufügen eines Objekts oder Arrays set (fieldName, value).

Unten ist ein Beispiel.

ObjectMapper mapper = new ObjectMapper();
ObjectNode root = mapper.createObjectNode();
root.put("stringValue", "test");
root.set("brankObject", mapper.createObjectNode());

Erstellen Sie einen ArrayNode mit Jackson

Beim Umgang mit Arrays stellte "ObjectMapper" eine Methode namens "createArrayNode ()" bereit. Sie können damit ein leeres JSON-Array erstellen. Verwenden Sie add (value), um diesem Array Elemente hinzuzufügen.

Unten ist ein Beispiel.

ObjectMapper mapper = new ObjectMapper();
ArrayNode array = mapper.createArrayNode();
array.add("value");
array.add(mapper.createObjectNode());

Beispiel für die Erstellung von JSON

Es ist sehr nutzlos, aber wenn Sie JSON von POJO selbst zusammenbauen, wird es so sein.

public class Test {
    public List<Item> items = Arrays.asList(
            new Item("Item 1", "$19.99", Arrays.asList(new Feature("New!"), new Feature("Awesome!"))),
            new Item("Item 2","$29.99", Arrays.asList(new Feature("Old."), new Feature("Ugly."))));

    public static class Item {
        Item(String name, String price, List<Feature> features) {
            this.name = name;
            this.price = price;
            this.features = features;
        }

        public String name, price;
        public List<Feature> features;
    }

    public static class Feature {
        Feature(String description) {
            this.description = description;
        }

        public String description;
    }
    
    public static void main(String[] args) throws IOException {
        Test test = new Test();

        ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
        ObjectNode root = mapper.createObjectNode();
        ArrayNode items = mapper.createArrayNode();
        for (Item itemsObj : test.items) {
            ObjectNode item = mapper.createObjectNode();
            item.put("name", itemsObj.name);
            item.put("price", itemsObj.price);
            ArrayNode features = mapper.createArrayNode();
            for (Feature featuresObj : itemsObj.features) {
                ObjectNode feature = mapper.createObjectNode();
                feature.put("description", featuresObj.description);
                features.add(feature);
            }
            item.set("features", features);
            items.add(item);
        }
        root.set("items", items);

        System.out.println(mapper.writeValueAsString(root));
        //Immerhin ist das Ausgabeergebnis das gleiche wie unten
        // System.out.println(mapper.writeValueAsString(test));
    }
}

Ausgabeergebnis

{
  "items" : [ {
    "name" : "Item 1",
    "price" : "$19.99",
    "features" : [ {
      "description" : "New!"
    }, {
      "description" : "Awesome!"
    } ]
  }, {
    "name" : "Item 2",
    "price" : "$29.99",
    "features" : [ {
      "description" : "Old."
    }, {
      "description" : "Ugly."
    } ]
  } ]
}

Zusammenfassung

Leistung usw. werden nicht so sehr berücksichtigt, aber bitte beziehen Sie sich darauf, wenn Sie JSON direkt mit Java + Jackson erstellen.

Recommended Posts

So montieren Sie JSON direkt in Jackson
Verstehen Sie, wie Sie den JSON-Decoder von Swift in 3 Minuten verwenden
Verwendung von JSON-Daten in der WebSocket-Kommunikation (Java, JavaScript)
Wie man Lombok im Frühling benutzt
So führen Sie JUnit in Eclipse aus
Wie man in Ruby auf unbestimmte Zeit iteriert
Wie man Ant in Gradle ausführt
Wie man die Programmierung in 3 Monaten beherrscht
Wie man JAVA in 7 Tagen lernt
So erhalten Sie Parameter in Spark
So installieren Sie Bootstrap in Ruby
So installieren Sie jQuery in Rails 6
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
So setzen Sie Lombok in Eclipse
So verketten Sie Zeichenfolgen mit Java
So installieren Sie Swiper in Rails
Wie POST JSON in Java-Methode mit OkHttp3 und Methode mit HttpUrlConnection-
Ich möchte einige Eigenschaften als JSON-Strings in Jackson erhalten!
[swift5] So legen Sie die Farbe hexadezimal fest
So implementieren Sie Suchfunktionen in Rails
So implementieren Sie den Kalman-Filter mit Java
So ändern Sie den App-Namen in Rails
Verwendung des benannten Volumes in docker-compose.yml
So filtern Sie den JUnit-Test in Gradle
So fügen Sie ein Video in Rails ein
So standardisieren Sie die Kopfzeile in Thymeleaf
So fügen Sie eine JAR-Datei in ScalaIDE hinzu
Verwendung von Docker in VSCode DevContainer
Verwendung von MySQL im Rails-Tutorial
Einbetten von Janus Graph in Java
[Rails] So konfigurieren Sie das Routing in Ressourcen
Antwortdaten direkt im Frühjahr schreiben
So erhalten Sie das Datum mit Java
So implementieren Sie Ranking-Funktionen in Rails
Verwendung von Umgebungsvariablen in RubyOnRails
So implementieren Sie die asynchrone Verarbeitung in Outsystems
So veröffentlichen Sie eine Bibliothek in jCenter
So geben Sie das ID-Attribut in JSF an
Verstehe in 5 Minuten !! Wie man Docker benutzt
So überschreiben Sie Firebase-Daten mit Swift
[Für Anfänger] So debuggen Sie mit Eclipse
Verwendung von ExpandableListView in Android Studio
So zeigen Sie Fehlermeldungen auf Japanisch an
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Android-Entwicklung, wie man den Wert des JSON-Objekts auf null überprüft
Zusammenfassung der Auswahl von Elementen in Selen
So erhalten Sie Keycloak-Anmeldeinformationen in der Interceptor-Klasse
[Java FX] So schreiben Sie Eclipse-Berechtigungen in build.gradle
So überprüfen Sie das Protokoll im Docker-Container
Farbcodierung der Konsolenausgabe in Eclipse
[Rails] Verwendung von Auswahlfeldern in Ransack
Code zum Escapezeichen von JSON-Zeichenfolgen in Java