【发布时间】:2019-08-26 23:34:11
【问题描述】:
我有以下课程
public class Cart {
private final String id;
public Cart(String id) { this.id = id;}
public String getId() { return id; }
}
还有以下测试:
String jsonString = "{\"id\":\"56c7b5f7-115b-4cb9-9658-acb7b849d5d5\"}";
Cart cart = mapper.readValue(jsonString, Cart.class);
assertThat(cart.getId()).isEqualTo("56c7b5f7-115b-4cb9-9658-acb7b849d5d5");
我收到以下错误:
com.fasterxml.jackson.databind.exc.MismatchedInputException: 不能 构造实例
com.store.domain.model.Cart(尽管至少 一个 Creator 存在):无法从 Object 值反序列化(没有 基于委托或基于属性的创建者)在 [来源: (字符串)"{"id":"56c7b5f7-115b-4cb9-9658-acb7b849d5d5"}";线:1, 栏目:2]
我不知道这里出了什么问题。有什么帮助吗?
【问题讨论】:
-
检查构造函数,是否有私有构造函数?如果是,并且您希望保持这种状态,那么您必须重写该对象的转换方式。
-
无论何时创建任何参数化构造函数,都始终创建默认构造函数。
标签: java spring jackson jackson-databind