[英]Deserializing JSON into Object with list attribute
我有兩個對象,具有OneToMany自我引用的Product和與Image的OneToMany關系。
從Rest API,我需要創建CRUD服務。 我創建了以下服務:
添加新產品:{“名稱”:“椅子”,“描述”:“紅色椅子”}
@Path("/product/add")
@Consumes("application/json")
添加新的子產品:{“名稱”:“表”,“描述”:“紅色表”}
@Path("/product/{id}/addChild")
@Consumes("application/json")
將圖像添加到產品:
/產品/ 1 /圖像/添加
{ “類型”: “PNG”}
@Path("/product/{id}/image/add")
@Consumes("application/json")
更新產品:
/產品/更新/ 1
{“名稱”:“椅子”,“描述”:“藍色椅子”}
@Path("/product/update/{id}")
@Consumes("application/json")
更新圖片:
/圖像/更新/ 1
{ “類型”: “JPEG”}
@Path("/image/update/{id}")
@Consumes("application/json")
刪除產品:
/產品/刪除/ 1
@DELETE
@Path("/product/delete/{id}")
刪除圖片:
/圖像/刪除/ 1
@DELETE
@Path("/image/delete/{id}")
Product.java:
@Entity
@Table
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer productId;
@Column(name = "NAME")
private String name;
@Column(name = "DESCRIPTION")
private String description;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="PRODUCT_ID")
private List<Image> images;
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
private List<Product> children;
@ManyToOne
@JoinColumn(name = "PARENT_PRODUCT_ID")
private Product parent;
Image.java:
@Entity
@Table
public class Image implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer imageId;
@Column(name = "TYPE")
private String type;
@ManyToOne
@JoinColumn(name = "PRODUCT_ID", nullable = false)
private Product product;
當我嘗試添加帶有圖片的產品時,出現錯誤:
{“ name”:“ bucket”,“ description”:“ red bucket”,“ images”:{“ type”:“ jpeg”}}
無法在[來源:org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@3c9786ad;中從START_OBJECT令牌中反序列化java.util.ArrayList實例。 第2行,第27列](通過參考鏈:br.com.model.Product [“ images”])
需要幫助:
您在json字符串中的images
屬性不是數組/列表,而是一個對象。 也應使用[]
封裝它,不僅要用{}
封裝。 這就是反序列化失敗的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.