gpt4 book ai didi

java - 如何使用 Jackson 为具有可选字段的类反序列化 json

转载 作者:行者123 更新时间:2023-11-30 12:07:43 25 4
gpt4 key购买 nike

我正在使用 Jackson 反序列化一个具有 Optional 成员变量的类,所以它看起来像

class Test{
Optional<String> testString;
}

但在序列化的形式中,它看起来是合法的

{
"value": {
"testString": "hi"
}

我怎样才能将它反序列化回我的 Test 类?因为当我尝试这样做时,它说未知字段“值”。不改变我的测试类是否可能。

最佳答案

您需要注册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]}

另见:

  1. jackson-modules-java8

关于java - 如何使用 Jackson 为具有可选字段的类反序列化 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54703636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com