Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
嵌套json到java对象列表<;对象>;返回预期值,但列出<;定义对象>;返回空值_Java_Arrays_Json_List - Fatal编程技术网

嵌套json到java对象列表<;对象>;返回预期值,但列出<;定义对象>;返回空值

嵌套json到java对象列表<;对象>;返回预期值,但列出<;定义对象>;返回空值,java,arrays,json,list,Java,Arrays,Json,List,我希望将以下json存储到java对象中: { "shippingDetails":{ "address":"khalda", "country":"Jordan", "town":"amman" }, "product":[ { "product":{ "id":2,

我希望将以下json存储到java对象中:

{  
       "shippingDetails":{  
          "address":"khalda",
          "country":"Jordan",
          "town":"amman"
       },
       "product":[  
          {  
             "product":{  
                "id":2,
                "name":"Wrap Dress",
                "price":330,
                "salePrice":165,
                "discount":50,
                "pictures":[  
                   "assets/images/fashion/product/1.jpg",
                   "assets/images/fashion/product/1.jpg",
                   "assets/images/fashion/product/1.jpg",
                   "assets/images/fashion/product/1.jpg"
                ],
                "shortDetails":"test",
                "description":"test",
                "stock":2,
                "new":true,
                "sale":false,
                "category":"women",
                "colors":[  
                   "gray",
                   "orange"
                ],
                "size":[  
                   "M",
                   "L",
                   "XL"
                ],
                "tags":[  
                   "caprese",
                   "puma",
                   "lifestyle"
                ],
                "variants":[  
                   {  
                      "color":"gray",
                      "images":"assets/images/fashion/product/1.jpg"
                   },
                   {  
                      "color":"orange",
                      "images":"assets/images/fashion/product/1.jpg"
                   }
                ]
             },
             "quantity":1
          }
       ],
       "totalAmount":330
    }
我有以下java bean: 主对象类称为Order,它具有

@Data
@Entity
@Table(name = "orders")
public class Order {
    @Id
    @Column(name="shippingDetailsId")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @OneToOne(cascade = {CascadeType.ALL})
    private ShippingDetails shippingDetails;
    //@OneToMany(cascade = {CascadeType.ALL})
    //List<Product> products;
    List<Object> product = new ArrayList<>();
    private float totalAmount;
}
以及配送详细信息bean:

@Data
@Entity
@Table(name = "shippingDetails")
public class ShippingDetails {
    @Id
    @Column(name="shippingDetailsId")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String address;
    private String country;
    private String town;
}
我尝试了很多方法,但都没有成功,首先我尝试在控制器中接受订单对象并尝试存储它,但没有成功,结果是:

当使用列表时,所有的值都会根据需要打印到控制台,并插入数据库中,但以相同的表顺序,这不是我要寻找的,我希望产品保存在一个名为Products的单独表中,所以我使用了列表

使用列表时,产品的值为空


然后我尝试从我的控制器接收一个字符串,并使用GSON库将其转换为Order对象,但效果不好,我遇到了许多异常,试图找出它,并尝试了stackoverflow和其他网站上提到的许多方法,但没有成功,请不要告诉我,我已经验证了我的json字符串,它是一个有效的json。

您可以在这里使用转换器。它从json生成java对象。 (包括它支持的gson和jackson)


这将确保Json到Java的映射正确,反之亦然

如果在JSON中看到层次结构,它与Java对象不匹配

 "product":[  // Parent-Product
          {  
             "product":{  // Child-Product
                "id":2,
直接映射到Java类似于

列出产品

如果您可以选择更改JSON文件,那么可以更改为以下内容,并摆脱父子产品层次结构

"product":[
  {
    "id":..
  },
  {
    "id":..
  }
  ..
]

什么部分在下降?是从JSON到Java对象的转换,还是将Java对象存储到数据库?还提到了异常,如果没有异常,很难理解出了什么问题。@subirKumarSao我已经编辑了我的问题,但有异常,我仍在尝试将json转换为java对象。我已经达到了这样一个水平,产品中的所有值都插入了空值到数据库中,但装运详细信息和总金额插入成功我尝试过这样的工具,但我的数据库中的值为空,甚至在插入到数据库之前,仅通过将值打印到控制台,产品值就为空。问题似乎来自“private Item product”字段的Order.java和Item.java,其中有列表和private Order。我建议您一步一步地开始,看看您是如何对其进行建模的。也许发电机可以帮你,这就是我向你推荐的原因。还要考虑当转换为JSON和JSON时,某些字段不能序列化/去序列化。也许你可以考虑,删除It.java,只使用订单。java和Product.java(ti用json表示),并删除项java;我已经一步一步地做了,我发现我的问题在产品类中,因为当我使用List时,它会将值打印到控制台,但是当我使用列表时,我得到了空值。有什么建议吗?列表很有意义,但是当我尝试它时,我得到了编译错误:org.hibernate.AnnotationException:使用'@'一个多个或'@'多个目标是未映射的class@Khaled因为hibernate无法理解这个复杂的层次结构,要么更改JSON,要么编写自定义解析器来映射产品。
"product":[
  {
    "id":..
  },
  {
    "id":..
  }
  ..
]