繁体   English   中英

将带有 json 的字符串转换为列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM