簡體   English   中英

讀取 String json 數組並轉換為 List 對象

[英]Read String json array and convert to List object

我有以下來自數據庫的 json 字符串。 我必須閱讀 json 並返回等效的 java 類。 json字符串:

{
 "Items": [
   {
     "mode": "old",
     "processing": [
       "MANUAL"
     ]
   },
   {
     "mode": "new",
     "processing": [
       "AUTO"
     ]
   }
 ]
}

物品類

public class Items {

    private String mode;
    private List<String> processing;

    public String getMode() {
        return mode;
    }

    public void setMode(String mode) {
        this.mode = mode;
    }

    public List<String> getProcessing() {
        return processing;
    }

    public void setProcessing(List<String> processing) {
        this.processing = processing;
    }
}

在這里,我嘗試使用ObjectMapper.readValue()方法讀取上述 json 字符串數組並將其轉換為 List。 我試過下面的代碼

ObjectMapper mapper=new ObjectMapper();
List<Items> actions = Arrays.asList(mapper.readValue(json, Items[].class)); 

並得到錯誤

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "actions" (class ), not marked as ignorable (2 known properties: "mode", "processing"])at [Source: (String)"{
         "items":[
                {
                      "mode": "old",
                      "processing": ["MANUAL"]
                    },
                    {
                      "mode": "new",
                      "processing": ["AUTO"]
                    }
         ]
        }"; line: 2, column: 13] 

對於json本身,可以嘗試使用本網站生成pojo類https://www.jsonschema2pojo.org/

了解解析 json 所需的類真的很有幫助。 對於您發布的示例,您需要的是 2 個類。

這是外部 json 的 POJO。

public class ExampleObject {

    @JsonProperty("Items")
    public List<Item> items = null;

}

這個是給你的 Item 類的

public class Item {

    @JsonProperty("mode")
    public String mode;

    @JsonProperty("processing")
    public List<String> processing = null;
    
    //Dont forget to put your setter getter in here.

}

之后,只需使用您的代碼將該 json 解析為新類。

ObjectMapper mapper = new ObjectMapper();
List<Items> actions = Arrays.asList(mapper.readValue(json, ExampleObject.class)); 

希望有幫助,加油

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM