有沒有辦法將 Java 枚舉與 YAML 進行(反)序列化?
php小編草莓回答:是的,有辦法將 Java 枚舉與 YAML 進行序列化與反序列化。 Java 枚舉可以透過使用 Jackson、Gson 或其他 JSON 函式庫來實現序列化和反序列化。 YAML 是一種人類友善的資料格式,也可以透過 Jackson、SnakeYAML 或其他 YAML 函式庫來實現與 Java 枚舉的序列化和反序列化。使用這些函式庫,可以輕鬆地將 Java 枚舉與 YAML 進行轉換,實現資料的傳輸和儲存。
問題內容
我正在嘗試序列化和反序列化一個包含枚舉到/來自 YAML 表示的 Java 物件。我正在嘗試使用 Jackson (com.fasterxml.jackson
) 套件來執行此操作。
我不斷收到此異常:
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]
登入後複製
我假設我需要某種適配器或轉換器,但不知道 YAML 有什麼可用(如果有的話)。
供參考:
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 }
登入後複製
數據.yaml:
--- name: gitlab_pipeline_success_total description: "blah blah blah" type: counter labels: - project - somethingElse data:
登入後複製
解析器.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); } }
登入後複製
解決方法
預設情況下,Jackson 使用枚舉的 valueOf
方法。區分大小寫。
您可以透過新增以 @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 }
登入後複製
以上是有沒有辦法將 Java 枚舉與 YAML 進行(反)序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
<🎜>:種植花園 - 完整的突變指南
3 週前
By DDD
<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
如何修復KB5055612無法在Windows 10中安裝?
3 週前
By DDD
北端:融合系統,解釋
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)