簡體   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