Wie konvertiere ich von YAML nach JSON in Java?

9

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.

    
Miguel A. Carrasco 19.05.2014, 17:57
quelle

6 Antworten

7

Dank HotLicks Tipp (in den Fragekommentaren) erreiche ich schließlich die Konvertierung mit den Bibliotheken org.json und SnakeYAML auf diese Weise:

%Vor%

Ich weiß nicht, ob es der beste Weg ist, es zu tun, aber es funktioniert für mich.

    
Miguel A. Carrasco 21.05.2014, 05:25
quelle
15

Hier ist eine Implementierung, die Jackson verwendet:

%Vor%

Benötigt:

%Vor%     
Cory Klein 08.07.2016 20:11
quelle
2

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%     
Todor Kisov 16.09.2015 11:27
quelle
1

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.

    
MarkAddison 14.03.2017 22:05
quelle
0

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%     
JonathanT 30.08.2016 08:09
quelle
0

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%     
Dan R. 28.01.2018 18:49
quelle

Tags und Links