Inhaltsverzeichnis
Frageninhalt
Workaround
Heim Java Gibt es eine Möglichkeit, Java-Enums mit YAML (de)serialisieren?

Gibt es eine Möglichkeit, Java-Enums mit YAML (de)serialisieren?

Feb 08, 2024 pm 10:15 PM

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]
Nach dem Login kopieren

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
}
Nach dem Login kopieren

data.yaml:

---
name: gitlab_pipeline_success_total
description: "blah blah blah"
type: counter
labels:
  - project
  - somethingElse
data:
Nach dem Login kopieren

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);
  }

}
Nach dem Login kopieren

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:

versehen ist
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
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)