gpt4 book ai didi

java - JSON 到 POJO,以整数作为数组属性键名称

转载 作者:行者123 更新时间:2023-12-01 09:00:50 25 4
gpt4 key购买 nike

我有以下 json,其中有一个产品数组,其中每个数组都有 Product_id。产品 ID 是数字。当我在线查找 pojo 类时,我得到的类名称以数字开头,这是不允许的。

 {
"_id:" : "1234AG567",
"products" : {
"1234":{
"product_name" : "xyz",
"product_type" : "abc"
},
"3456":{
"product_name" : "zzz",
"product_type" : "def"
}
}
}

Below are the Pojo classes I am getting



public class MyPojo
{
private Products products;

public Products getProducts ()
{
return products;
}
public void setProducts (Products products)
{
this.products = products;
}

@Override
public String toString()
{
return "ClassPojo [products = "+products+"]";
}

}

public class Products
{
private 1234 1234;

private 3456 3456;

public 1234 get1234 ()
{
return 1234;
}

public void set1234 (1234 1234)
{
this.1234 = 1234;
}

public 3456 get3456 ()
{
return 3456;
}

public void set3456 (3456 3456)
{
this.3456 = 3456;
}

@Override
public String toString()
{
return "ClassPojo [1234 = "+1234+", 3456 = "+3456+"]";
}
}
public class 3456
{
private String product_name;

private String product_type;

public String getProduct_name ()
{
return product_name;
}

public void setProduct_name (String product_name)
{
this.product_name = product_name;
}

public String getProduct_type ()
{
return product_type;
}

public void setProduct_type (String product_type)
{
this.product_type = product_type;
}

@Override
public String toString()
{
return "ClassPojo [product_name = "+product_name+", product_type = "+product_type+"]";
}
}

public class 1234
{
private String product_name;

private String product_type;

public String getProduct_name ()
{
return product_name;
}

public void setProduct_name (String product_name)
{
this.product_name = product_name;
}

public String getProduct_type ()
{
return product_type;
}

public void setProduct_type (String product_type)
{
this.product_type = product_type;
}

@Override
public String toString()
{
return "ClassPojo [product_name = "+product_name+", product_type = "+product_type+"]";
}
}

我使用http://pojo.sodhanalibrary.com/进行转换

欢迎提供有关如何为此 JSON 创建 pojo 的任何帮助。提前致谢。

最佳答案

您可以使用Map来存储products并将其包装在另一个类中以存储整个json。例如。 Product 类如下所示:

class Product {

@JsonProperty("product_name")
private String productName;

@JsonProperty("product_type")
private String productType;

public String getProductName() {
return productName;
}

public void setProductName(String productName) {
this.productName = productName;
}

public String getProductType() {
return productType;
}

public void setProductType(String productType) {
this.productType = productType;
}
}

包装类如下所示:

class ProductList{

@JsonProperty("_id")
private String id;

private Map<String, Product> products;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public Map<String, Product> getProducts() {
return products;
}

public void setProducts(Map<String, Product> products) {
this.products = products;
}
}

这是 Jackson 的反序列化示例:

public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
ProductList list = mapper.readValue("{\"_id\" : \"1234AG567\",\"products\" : {\"1234\":{\"product_name\" : \"xyz\",\"product_type\" : \"abc\"},\"3456\":{\"product_name\" : \"zzz\",\"product_type\" : \"def\"}}}", ProductList.class);
System.out.println(list.getId());
System.out.println(list.getProducts());
}

请注意,您的 json 中有一个拼写错误。 Id 字段应该是 _id 而不是 _id: (如果这是实际的字段名称,那么您可以将 JsonProperty 注释更改为 _id: .

Here 是 Jackson 的文档。

关于java - JSON 到 POJO,以整数作为数组属性键名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41686174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com