如何有效地将JsonList映射到Java对象列表?

时间:2017-10-04 03:00:56

标签: java json spring jackson

我正在使用Jackson将以下Json列表映射到Java对象列表。

以下是清单。

 String UserListString="[{\"UID\":1,\"Username\":\"111\",\"ID\":\"rey\",\"Name\":\"User01\",\"Date\":\"12-10-2016 10:07\",\"ItemList\":[{\"Item\":9,\"Code\":\"dggd\"}]},{\"UID\":2,\"Username\":\"222\",\"ID\":\"dsse\",\"Name\":\"User02\",\"Date\":\"13-10-2016 02:08\",\"ItemList\":[{\"Item\":4,\"Code\":\"res\"}]},{\"UID\":3,\"Username\":\"333\",\"ID\":\"wee\",\"Name\":\"User03\",\"Date\":\"13-10-2016 02:09\",\"ItemList\":[{\"Item\":1,\"Code\":\"ret\"}]";

我通过以下解析:

 ObjectMapper objectMapper = new ObjectMapper();   
 ArrayList<Users> list =new ArrayList<Users> ();
 list = objectMapper.readValue(UserListString,TypeFactory.defaultInstance().constructCollectionType((Class<? extends Collection>) List.class,  Users.class));

我的用户类如下:

public class Users {

    @JsonProperty("UID")
    private String UID;

    @JsonProperty("Username")
    private String Username;


    @JsonProperty("ID")
    private String ID;

    @JsonProperty("Name")
    private String Name;

    @JsonProperty("Date")
    private String Date;



    @JsonProperty("ItemList")
    private ArrayList<Item>ItemList;

..///getters and setters
}

我的项目类

public class Item {
    private String Item;
    private String Code;
    public String getItem() {
        return Item;
    }
    public void setItem(String item) {
        Item = item;
    }
    public String getCode() {
        return Code;
    }
    public void setCode(String code) {
        Code = code;
    }



}

我收到的错误就像

java.lang.IllegalArgumentException: Can not create TypeBindings for class java.awt.List with 1 type parameter: class expects 0

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

至少,您需要更改此导入:

import java.awt.List;

...至

import java.util.List;

您当前拥有的那个与Abstract Window Toolkit相关,而不是Java集合接口。