我正在使用Jackson
对具有Optional
成员变量的类进行反序列化,所以看起来像
class Test{
Optional<String> testString;
}
但看起来像是序列化的形式,这是合法的
{
"value": {
"testString": "hi"
}
如何将其反序列化回我的Test
类?因为在尝试这样做时,它会显示未知字段“值”。无需更改我的测试课程就可以了。
答案 0 :(得分:0)
您需要注册Jdk8Module
。在下面您可以找到示例,该怎么做:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import java.io.File;
import java.util.Optional;
public class JsonApp {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());
Test test = new Test();
test.setTestString(Optional.of("str"));
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(test);
System.out.println(json);
System.out.println(mapper.readValue(json, Test.class));
}
}
上面的代码显示:
{
"testString" : "str"
}
Test{testString=Optional[str]}
另请参阅: