gpt4 book ai didi

java - Rest API 调用返回 LocalDate 错误

转载 作者:行者123 更新时间:2023-12-02 09:48:42 25 4
gpt4 key购买 nike

我正在尝试进行休息 API 调用,但不断收到 400 Bad Request。从日志来看,我的 POJO 的 LocalDate 字段之一似乎存在问题。

我的POJO:

public class MyObj implements Serializable {
private Long id;
private String remark;
private LocalDate someDate;
...other fields, getter and setter

在我的main()

MyObj myObj = new MyObj();
myObj .setRemark("My test case");
myObj .setSomeDate( LocalDate.now());
...

WebResource webResource = client
.resource("my_url");

webResource
.header("apikey", "mykey")
.accept("application/json")
.type("application/json")
.post(MyObj.class, myObj );

运行上面的代码,出现以下错误:错误请求:JSON 解析错误:需要数组或字符串。;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:需要数组或字符串。
在[来源:(PushbackInputStream);行:1,列:159](通过引用链:com.xxx.MyObj[“someDate”])

知道为什么会发生上述情况吗?

最佳答案

LocalDate 应在序列化时转换为字符串,并在反序列化时转换回 LocalDate。为此,您可以在对象 LocalDate 属性上使用 @JsonDeserialize@JsonSerialize

@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate someDate;

有关更多信息,请参阅此链接: https://kodejava.org/how-to-format-localdate-object-using-jackson

另一种方法是使用 ObjectMapper 并注册模块 JavaTimeModule()

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());

使用ObjectMapper和类似问题的示例: https://groups.google.com/forum/#!topic/jackson-user/XdHvRKG1vhY

关于java - Rest API 调用返回 LocalDate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56476997/

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