我有下面的课
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):无法从[Source:"{“id”:“56c7b5f7-115b-4cb9-9658-acb7b849d5d5”}";行:1,列:2]
我不知道这里出了什么问题。有什么需要帮忙的吗?
3条答案
按热度按时间qojgxg4l1#
你应该像这样添加一个没有任何参数的普通构造函数:
dpiehjr42#
您需要将bean定义为:
输出
默认情况下,
Jackson
使用默认构造函数和setter / getter方法创建任何类的示例。因为你的bean是不可变的。没有默认的构造函数和setter,你需要显式地告诉
Jackson
如何使用@JsonCreator
创建Cart
类的示例,以及如何使用@JsonProperty
设置属性值。llycmphe3#
为了解决类似的反序列化错误,当使用Kotlin数据类时,我需要在初始化
ObjectMapper
示例时将KotlinModule
示例添加到ObjectMapper
示例。