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

标签 java json objectmapper

我正在尝试将 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;
    }

但是我得到了异常:

Cannot deserialize instance of java.util.LinkedHashMap

所以我尝试了不同的方式:

A[] map = mapper.readValue(jSONString, A[].class);

我得到了:

InvalidDefinitionException: Cannot construct instance of com.model.A (no Creators, like default construct, exist):

更新:

我尝试将 Service.class 更改为:

List<A> map = mapper.readValue(jSONString, new TypeReference<List<A>>(){});

仍然有异常:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.model.A (no Creators, like default construct, exist):

所以我删除了@AllArgsConstructor注释并手动添加了Constructor:

   public A(String paramName, String paramValue) {}

仍然是一个异常(exception):

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.model.A (no Creators, like default construct, exist):

最佳答案

我认为问题写在错误中:尝试在必须反序列化的类上定义一个空构造函数。 我还认为,要序列化类(因此,另一种方式,从字节到类),您必须实现可序列化接口(interface)。

关于java - 将带有 json 的字符串转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60334535/

相关文章:

c# - Audit.net Audit.MVC 输出到 json 而不是 json 文件

javascript - 如何使用 chart.js 在饼图中动态显示标签和标签值?

java - Jackson ObjectMapper 中的泛型静态方法

java - 序列化嵌套对象json jackson

java - 无法加载 [org.bouncycaSTLe.jcajce.provider.digest.GOST3411$Mappings]

java - 堆栈溢出错误与无限循环

ios - swift:从本地 json 文件填充的 uitableview 在滚动时严重断断续续

java - "engine"和 "runtime"有什么区别?

java - 为什么在 LWUIT 中按钮有 Action 监听器而命令没有?

java - ObjectMapper 的默认行为