Gibt es eine Möglichkeit, Java-Enums mit YAML (de)serialisieren?
php-Editor-Erdbeer-Antworten: Ja, es gibt eine Möglichkeit, Java-Enumerationen und YAML zu serialisieren und zu deserialisieren. Java-Aufzählungen können mithilfe von Jackson-, Gson- oder anderen JSON-Bibliotheken serialisiert und deserialisiert werden. YAML ist ein benutzerfreundliches Datenformat, das auch zum Serialisieren und Deserialisieren von Java-Enums über Jackson, SnakeYAML oder andere YAML-Bibliotheken verwendet werden kann. Mithilfe dieser Bibliotheken können Sie Java-Aufzählungen zur Datenübertragung und -speicherung problemlos in YAML konvertieren.
Frageninhalt
Ich versuche, ein Java-Objekt, das eine Aufzählung enthält, in/von einer YAML-Darstellung zu serialisieren und zu deserialisieren. Ich versuche, dazu das Jackson-Paket (com.fasterxml.jackson
) zu verwenden.
Ich bekomme immer wieder diese Ausnahme:
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `com.beastcode.devops.prometheusbroker.domain.Metric$Type` from String "counter": not one of the values accepted for Enum class: [GAUGE, COUNTER]
Ich gehe davon aus, dass ich einen Adapter oder Konverter benötige, weiß aber nicht, was für YAML verfügbar ist (falls vorhanden).
Zur Referenz:
Metric.java:
public class Metric { public enum Type { COUNTER, GAUGE } private String name; private String description; private Type type; private List<String> labels; private List<MetricData> data; // getters/setters removed }
data.yaml:
--- name: gitlab_pipeline_success_total description: "blah blah blah" type: counter labels: - project - somethingElse data:
parser.java:
public class Parser { private ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); public void parse() throws StreamReadException, DatabindException, IOException { Metric m = mapper.readValue(new File("data.yaml"), Metric.class); } }
Workaround
Standardmäßig verwendet Jackson die valueOf
-Methode der Aufzählung. Groß- und Kleinschreibung beachten.
Sie können dies leicht ändern, indem Sie eine statische Methode hinzufügen, die mit @JsonCreator
:
public class Metric { public enum Type { COUNTER, GAUGE; @JsonCreator public static Type getType(String value) { return valueOf(value.toUpperCase()); } // optional, for serialization @JsonValue public String value() { return name().toLowerCase(); } } // rest omitted }
Das obige ist der detaillierte Inhalt vonGibt es eine Möglichkeit, Java-Enums mit YAML (de)serialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

