[英]How to Deserialize json for class having Optional fields using Jackson
I'm using Jackson
to deserialise a class which has Optional
member variables, so it looks like 我正在使用
Jackson
来反序列化具有Optional
成员变量的类,所以看起来像
class Test{
Optional<String> testString;
}
but in serialised form it looks like, which is legit 但是以序列化的形式看起来是合法的
{
"value": {
"testString": "hi"
}
How can I deserialise it back to my Test
class?, because when I try to do so it says unknown field "value". 我如何将其反序列化回我的
Test
类?,因为当我尝试这样做时,它说未知字段“值”。 Can it be possible without changing my test class. 是否可以不更改我的测试课程。
You need to register Jdk8Module
. 您需要注册
Jdk8Module
。 Belowe you can find example, how to do that: 在下面您可以找到示例,该如何做:
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));
}
}
Above code prints: 上面的代码打印:
{
"testString" : "str"
}
Test{testString=Optional[str]}
See also: 也可以看看:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.