【发布时间】:2019-10-21 22:31:33
【问题描述】:
我正在尝试进行休息 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 );
运行上面的代码我得到以下错误:
Bad Request: JSON parse error: Expected array or string.; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Expected array or string.
at [Source: (PushbackInputStream); line: 1, column: 159] (through reference chain: com.xxx.MyObj["someDate"])
知道为什么会发生上述情况吗?
【问题讨论】:
-
正如错误所说的预期数组或字符串,您传递的是 POJO 中的 LocaleDate 对象,使其成为字符串,并且在代码级别可能具有相同的 LocaleDate 对象并使用 toString( )。
-
您能否将
my_url生成的JSON 结构添加到您的问题中?如果我没记错的话,Jackson 期望格式为[2019, 6, 6]或"2019-06-06",并且我假设您的 REST 服务没有这样做。
标签: java json rest spring-boot jackson-databind