JSON:序列化 Guava 可选

2024-01-22

com.google.common.base.Optional 是否有 Json 序列化器/反序列化器?

开箱即用的这似乎不适用于杰克逊,见下文:

package com.example;

import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import com.google.common.base.Optional;

public class TestClass {

public Optional<String> myString;

public TestClass() {
    myString = Optional.of("testString");
}

public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
    TestClass testClass = new TestClass();
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonString = objectMapper.writeValueAsString(testClass);
    System.out.println(jsonString);
}

}

-> {“myString”:{“present”:true}}


确实有一个番石榴模块 https://github.com/FasterXML/jackson-datatype-guavaGitHub 上的 Jackson,但尚不支持可选。看起来像是一个相当简单的串行器/解串器来实现;行为应该与 @JsonUnwrapped 非常相似,因此对于您的简单测试,结果应该是:

{“myString”:“testString”}

对于Optional.absent,序列化形式应该是:

{“myString”:空}

Update:看起来很简单,所以我刚刚实现了它并将其推送到 GitHub。您可以通过官方存储库获取它并从源代码构建,或者等待下一个正式版本。享受!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON:序列化 Guava 可选 的相关文章

随机推荐