[英]Jackson + YAML for Not A Number (.NAN)
根據 YAML 規范,非數字表示為.NAN
https://yaml.org/refcard.html
但是,當使用jackson-dataformats-text
YAMLMapper
jackson-dataformats-text
的YAMLMapper
反序列YAMLMapper
,我們得到:
格式錯誤的數值“.NAN”
你如何告訴ObjectMapper
接受給定的字符串作為表示 null 而不深入到自定義反序列化器? 或者我應該啟用特定於 YAML 的功能嗎?
如果你使用NULL
,它在 Jackson 端工作,但它不再是有效的 YAML 和模式感知編輯器,比如 VS Code 知道它,這會讓最終用戶感到困惑:
我通過繞過YAMLMapper
並直接轉到 SnakeYAML 的Yaml
解決了這個問題。 我這樣做是為了解決 Jackson 沒有解決錨點的問題,但后來我意識到它也解決了.NaN
/null 問題 - .NaN
現在被正確解析為Double.NaN
static final Yaml YAML = new Yaml();
static final ObjectMapper MAPPER = new ObjectMapper();
...
// Use SnakeYAML directly to resolve anchors and handle .NaN
protected static <T> T load(Path p, Class<T> cls) throws IOException {
val yaml = YAML.load(Files.newInputStream(p));
return MAPPER.treeToValue(MAPPER.valueToTree(yaml), cls);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.