3 回答
TA贡献1816条经验 获得超6个赞
您的 JSON 文件中有一个产品列表。您正在反序列化一个具有 3 个字段的对象。这些字段都不是在产品下,但您忽略了缺少的字段。
尝试反序列化为包含 Product 列表的新类。删除 @JsonRootName
TA贡献2051条经验 获得超10个赞
您正在尝试反序列化 JSON 数组。也不要省略 setter,因为这个变量的访问是私有的。你可以参考下面的代码。我已经检查过了,我能够正确地反序列化它。
@JsonIgnoreProperties(ignoreUnknown = true)
class Product {
private Integer id;
private String productSku;
private String productInventory;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProductSku() {
return productSku;
}
public void setProductSku(String productSku) {
this.productSku = productSku;
}
public String getProductInventory() {
return productInventory;
}
public void setProductInventory(String productInventory) {
this.productInventory = productInventory;
}
}
class Products{
private List<Product> products;
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = products;
}
}
public class Main{
public static void main(String[] args) throws Exception{
String jsonString =
"{\n"
+ " \"products\": [\n"
+ " {\n"
+ " \"id\": 1,\n"
+ " \"productSku\": \"123\",\n"
+ " \"productInventory\": \"24\"\n"
+ " },\n"
+ " {\n"
+ " \"id\": 2,\n"
+ " \"productSku\": \"12350\",\n"
+ " \"productInventory\": \"22\"\n"
+ " },\n"
+ " {\n"
+ " \"id\": 3,\n"
+ " \"productSku\": \"12351\",\n"
+ " \"productInventory\": \"19\"\n"
+ " }\n"
+ " ]\n"
+ "}";
ObjectMapper mapper = new ObjectMapper();
Products products = mapper.readValue(jsonString, Products.class);
// To just access list of ids
List<Product> productsList= products.getProducts();
List<Integer> productIds = new ArrayList<>();
for(Product product : productsList){
productIds.add(product.getId());
}
System.out.println(productIds);
}
}
TA贡献1813条经验 获得超2个赞
您有一个对象,该对象内部是一个对象列表。IE
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonRootName(value = "products")
public class Products {
private List<Product> products;
public List<Product> getProducts() {
return products;
}
public void setProducts(final List<Product> products) {
this.products = products;
}
}
public class Product{
.....
}
ObjectMapper objectMapper = new ObjectMapper();
Products product = objectMapper.readValue("json here....", Products.class);
System.out.println(product.getProducts().size());
添加回答
举报
