Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON到POJO,整数作为数组属性键名_Java_Json_Pojo - Fatal编程技术网

Java JSON到POJO,整数作为数组属性键名

Java JSON到POJO,整数作为数组属性键名,java,json,pojo,Java,Json,Pojo,我有下面的json,它有一个product数组,每个数组都有product_id。product id是数字。当我在网上寻找pojo类时,我得到的类名是以数字开头的,这是不允许的 { "_id:" : "1234AG567", "products" : { "1234":{ "product_name" : "xyz", "product_type" : "abc"

我有下面的json,它有一个product数组,每个数组都有product_id。product 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+"]";
}
}

我已经使用了转换

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

您可以使用Map存储产品,并将其包装到另一个类中以存储整个json。例如,产品类别如下所示:

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;
    }
}
{
    "products": [
    {
        "id": "1234",
        "product_name": "xyz",
        "product_type": "abc"
    },
    {
        "id": "3456",
        "product_name": "zzz",
        "product_type": "def"
    }]
}
包装器类如下所示:

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;
    }
}
{
    "products": [
    {
        "id": "1234",
        "product_name": "xyz",
        "product_type": "abc"
    },
    {
        "id": "3456",
        "product_name": "zzz",
        "product_type": "def"
    }]
}
请注意,您的json中有一个输入错误。Id字段应该是_Id而不是_Id:如果这是实际的字段名,那么您可以将JsonProperty注释更改为_Id:


是Jackson的文档。

JSON是有效的,但是您将无法创建POJO来表示它。正如您已经看到的,您不能创建以数字开头的类,而且您也不想这样做,因为它们不会给您提供任何意义

我猜products是一个Product数组,这个数字是一个ID或其他什么。JSON应该如下所示:

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;
    }
}
{
    "products": [
    {
        "id": "1234",
        "product_name": "xyz",
        "product_type": "abc"
    },
    {
        "id": "3456",
        "product_name": "zzz",
        "product_type": "def"
    }]
}
它将反序列化为包含

private List<Product> products;

谢谢。是的,输入错误应该是_id。我将尝试您的上述解决方案并让您知道。谢谢@Darshan Mehta。答案是什么