Ich möchte nur eine Zeichenkette, die ein yaml enthält, in eine andere Zeichenkette umwandeln, die das corseponding konvertierte json mit Java enthält.
Zum Beispiel zeigen Sie an, dass ich den Inhalt dieses yaml
habe %Vor%in einem String namens yamlDoc:
%Vor%Ich möchte eine Methode, die den yaml-String in einen anderen String mit dem entsprechenden json, d. h. dem folgenden Code
, umwandeln kann %Vor%sollte drucken:
%Vor%Ich möchte wissen, ob etwas ähnliches wie die Methode convertToJson () in diesem Beispiel existiert.
Ich habe versucht, dies mithilfe von SnakeYAML zu erreichen, also diesen Code
%Vor%erstellt eine Map, die die analysierte YAML-Struktur enthält (mit verschachtelten Maps). Wenn es dann einen Parser gibt, der eine Karte in eine JSON-Zeichenkette umwandeln kann, löst das mein Problem, aber ich habe auch so etwas nicht gefunden.
Jede Antwort wird sehr geschätzt.
Hier ist eine Implementierung, die Jackson verwendet:
%Vor%Benötigt:
%Vor%Vielen Dank an Miguel A. Carrasco, er hat das Problem gelöst. Aber seine Version ist restriktiv. Sein Code schlägt fehl, wenn root eine Liste oder ein primitiver Wert ist. Die allgemeinste Lösung ist:
%Vor%Ich wurde auf diese Frage hingewiesen, als ich nach einer Lösung für dasselbe Problem suchte.
Ich stolperte auch über den folgenden Artikel Ссылка
Es scheint, dass die Jackson JSON-Bibliothek eine YAML-Erweiterung hat, die auf SnakeYAML basiert. Da Jackson eine der De-facto-Bibliotheken für JSON ist, dachte ich, dass ich das hier verlinken sollte.
Ich habe festgestellt, dass das Beispiel bei der Konvertierung von Swagger (OpenAPI) YAML in JSON keine korrekten Werte erzeugt hat. Ich schrieb die folgende Routine:
%Vor%Dann könnte ich SnakeYAML verwenden, um den JSON mit folgendem zu laden und auszugeben:
%Vor%Danke, Miguel! Ihr Beispiel hat mir sehr geholfen. Ich wollte die JSON-Java-Bibliothek nicht verwenden. Ich bevorzuge GSON. Aber es war nicht schwer, die Logik von JSON-Java in das Domänenmodell von GSON zu übertragen. Eine einzelne Funktion kann den Trick machen:
%Vor%Dann können Sie ein JsonElement von einer YAML-Zeichenfolge mit folgenden Syntax analysieren:
%Vor%und drucken Sie es mit:
aus %Vor%