ホームページ  >  記事  >  YAML を使用して Java 列挙型を (逆) シリアル化する方法はありますか?

YAML を使用して Java 列挙型を (逆) シリアル化する方法はありますか?

WBOY
WBOY転載
2024-02-08 22:15:18897ブラウズ

php エディターのイチゴの答え: はい、Java 列挙型と YAML をシリアル化および逆シリアル化する方法があります。 Java 列挙型は、Jackson、Gson、またはその他の JSON ライブラリを使用してシリアル化および逆シリアル化できます。 YAML は人間にとって使いやすいデータ形式であり、Jackson、SnakeYAML、またはその他の YAML ライブラリを介して Java 列挙型をシリアル化および逆シリアル化するために使用することもできます。これらのライブラリを使用すると、データの送信と保存のために Java 列挙型を YAML に簡単に変換できます。

質問内容

列挙型を含む Java オブジェクトを YAML 表現との間でシリアル化および逆シリアル化しようとしています。これを行うために Jackson (com.fasterxml.jackson) パッケージを使用しようとしています。

次の例外が発生し続けます:

リーリー

何らかのアダプターまたはコンバーターが必要だと思いますが、YAML で何が利用できるのか (存在する場合) がわかりません。

###参考のために:###

メトリック.java:

リーリー

data.yaml:

リーリー

Parser.java:

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]

Solution

デフォルトでは、Jackson は列挙の

valueOf

メソッドを使用します。大文字と小文字を区別。 これは、

@JsonCreator

: の注釈が付いた静的メソッドを追加することで簡単に変更できます。 リーリー

以上がYAML を使用して Java 列挙型を (逆) シリアル化する方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。