[英]Convert String with json to List
我正在尝试将 JSON 字符串(必须是列表)转换为对象列表:
[
{
"paramName":"Content-Type",
"paramValue":"text/xml; charset\u003d\"utf-8\""
}
]
这是我的 Service.class:
String jSONString = new Gson().toJson(systemParams);
ObjectMapper mapper = new ObjectMapper();
List<A> map = (List<A>) mapper.readValue(jSONString, A.class);
这是我的模型:
@Data
@AllArgsConstructor
public class A {
String paramName;
String paramValue;
}
但我得到了例外:
无法反序列化
java.util.LinkedHashMap
实例
所以我尝试了不同的方式:
A[] map = mapper.readValue(jSONString, A[].class);
我获得了:
InvalidDefinitionException:无法构造
com.model.A
实例(不存在创建者,如默认构造):
更新:
我试图改变 Service.class 为:
List<A> map = mapper.readValue(jSONString, new TypeReference<List<A>>(){});
仍然有一个例外:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 无法构造
com.model.A
实例(没有创建者,如默认构造,存在):
所以我删除了@AllArgsConstructor 注释并手动添加了构造函数:
public A(String paramName, String paramValue) {}
仍然是一个例外:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 无法构造
com.model.A
实例(没有创建者,如默认构造,存在):
我认为问题写在错误中:尝试在必须反序列化的类上定义一个空的构造函数。 我还认为要序列化类(因此,从字节到类的另一种方式)您必须实现可序列化的接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.