JSON-B 在不改变模型的情况下将日期字符串反序列化为 joda DateTime 类
JSON-B deserializing date string into joda DateTime without altering model classes
我正在将 JSON 日期字段反序列化为外部模型 class。请求看起来像:
{
"name": "Bob",
"lastName":"Bobertson",
"date": "2019-03-12"
}
这是我用来反序列化的代码。请注意,有问题的 class 是外部的,但与传入的请求匹配。
import javax.json.bind.Jsonb;
private static Jsonb jsonb = JsonbBuilder.create();
public static External deserExternal(String jsonRQ) {
return jsonb.fromJson(jsonRQ, External.class);
}
像下面这样调用此方法会导致
javax.json.bind.JsonbException: Error deserialize JSON value into type: class org.joda.time.LocalDate
String jsonRQ= readFile("./path/to/file.json");
External externalRQ = deserExternal(jsonRQ);
到目前为止我找到的所有解决方案都涉及对模型进行注释以说明 joda 类型,但我没有该选项。我如何通过仅编辑反序列化器来实现此目的,最好是允许它根据需要自动将日期字符串转换为 joda DateTime?
我是通过 JACKSON 知道的,你可以使用类似
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.readValue(jsonRQ, External.class);
Maven 依赖项:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.1.1</version>
</dependency>
不确定是否可以切换库
我正在将 JSON 日期字段反序列化为外部模型 class。请求看起来像:
{
"name": "Bob",
"lastName":"Bobertson",
"date": "2019-03-12"
}
这是我用来反序列化的代码。请注意,有问题的 class 是外部的,但与传入的请求匹配。
import javax.json.bind.Jsonb;
private static Jsonb jsonb = JsonbBuilder.create();
public static External deserExternal(String jsonRQ) {
return jsonb.fromJson(jsonRQ, External.class);
}
像下面这样调用此方法会导致
javax.json.bind.JsonbException: Error deserialize JSON value into type: class org.joda.time.LocalDate
String jsonRQ= readFile("./path/to/file.json");
External externalRQ = deserExternal(jsonRQ);
到目前为止我找到的所有解决方案都涉及对模型进行注释以说明 joda 类型,但我没有该选项。我如何通过仅编辑反序列化器来实现此目的,最好是允许它根据需要自动将日期字符串转换为 joda DateTime?
我是通过 JACKSON 知道的,你可以使用类似
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.readValue(jsonRQ, External.class);
Maven 依赖项:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.1.1</version>
</dependency>
不确定是否可以切换库