简体   繁体   English

JsonObject 中的 JsonArray 字段到 Java Object

[英]JsonArray field in a JsonObject to Java Object

Below is my JSON data.下面是我的 JSON 数据。 I want to convert this to POJOs to store the Name,id,profession in a header table and the respective Jsonarray field in a child table.我想将其转换为 POJO 以将 Name、id、profession 存储在 header 表中,并将相应的 Jsonarray 字段存储在子表中。

JSON:
{
  "Name": "Bob",
  "id": 453345,
  "Profession": "Clerk",
  "Orders": [
    {
      "Item": "Milk",
      "Qty": 3
    },
    {
      "Item": "Bread",
      "Qty": 3
    }
  ]
}

Entity classes:

public class User {
        private String name;
        private Integer id;
        private String Profession;
        private JsonArray Orders;
        private UserCart userCart;

        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getProfession() {
            return Profession;
        }
        public void setProfession(String profession) {
            Profession = profession;
        }
        public JsonArray getOrders() {
            return Orders;
        }
        public void setOrders(JsonArray orders) {
            Orders = orders;
        }
        public UserCart getUserCart() {
            return userCart;
        }
        public void setUserCart(UserCart userCart) {
            this.userCart = userCart;
        }
    }

public class UserCart {
    private String item;
    private Integer qty;
    public String getItem() {
        return item;
    }
    public void setItem(String item) {
        this.item = item;
    }
    public Integer getQty() {
        return qty;
    }
    public void setQty(Integer qty) {
        this.qty = qty;
    }
}

But when I do below;但是当我在下面做时; I get error我收到错误

Cannot deserialize instance of org.json.JSONArray out of START_ARRAY token无法从 START_ARRAY 令牌中反序列化org.json.JSONArray的实例

User user = new User();

JsonNode data = new ObjectMapper().readTree(jsonString);

user = headerMap.readValue(data.toString(), User.class);

How do I go about assigning the entire JSON to both the Java objects?我如何 go 关于将整个 JSON 分配给两个 Java 对象?

Use List<UserCart> for array data in json and use @JsonProperty for mapping different json node name to java object field.List<UserCart>用于 json 中的数组数据,并使用@JsonProperty将不同的 json 节点名称映射到 java626966 字段。 No need to use extra field ( JsonArray Orders ) anymore.不再需要使用额外的字段( JsonArray Orders )。

@JsonProperty("Orders")
private List<UserCart> userCart;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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