当我试图保存与另一个Pojo以一对多关系映射的Pojo类对象时,我收到了JSON解析错误:无法反序列化START_OBJECT令牌中的java.util.hashset
实例。我不确定在Postman中是否发送了正确的JSON格式。我正在尝试保存定义了集合元素集的持久性类的值。
父Pojo类:
package com.example.demo.model;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "vendor")
public class Vendor {
@Id
int vendorId;
@Column
String vendorName;
@OneToMany(fetch = FetchType.LAZY, targetEntity = Customer.class, cascade = CascadeType.ALL)
@JoinColumn(name = "vendorId")
Set children;
public int getVendorId() {
return vendorId;
}
public void setVendorId(int vendorId) {
this.vendorId = vendorId;
}
public String getVendorName() {
return vendorName;
}
public void setVendorName(String vendorName) {
this.vendorName = vendorName;
}
public Set getChildren() {
return children;
}
public void setChildren(Set children) {
this.children = children;
}
}
子Pojo类:
package com.example.demo.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GeneratorType;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@Entity
@Table(name = "customer")
public class Customer {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
int customerId;
@Column
String customerName;
public int getCustomerId() {
return customerId;
}
public void setCustomerId(int customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.model.Vendor;
import com.example.demo.service.VendorDataSaveService;
@RestController
public class VendorSaveController {
@Autowired
private VendorDataSaveService dataSaveService;
@PostMapping("/save")
public void saveVendor(@RequestBody Vendor vendor) {
dataSaveService.saveVendorRecord(vendor);
}
}
package com.example.demo.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.model.Vendor;
import com.example.demo.repository.VendorDataSaveRepository;
@Service
public class VendorDataSaveService {
@Autowired
private VendorDataSaveRepository repository;
public void saveVendorRecord(Vendor vendor) {
repository.save(vendor);
}
}
存储库类:
package com.example.demo.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demo.model.Vendor;
public interface VendorDataSaveRepository extends JpaRepository<Vendor, Integer> {
}
我从Postman发送的JSON格式:
"vendorId" : 101,
"vendorName" : "JAIN BOOKS",
"children" : {
"customerId" : 1,
"customerName" : "AMIT"
}
}
我在控制台收到这个错误消息:-
我需要改进什么?
事实上,JB Nizet在一篇评论中就指出了这一点。Jackson告诉您,它正在尝试将JSON反序列化为set
(java.util.hashset
),这是一个集合,但文件的这一部分的JSON是一个对象start_object
。它不知道如何把一个对象变成一个集合,所以它在放弃。错误位于供应商[“children”]
您的请求包含以下内容:
"children" : {
"customerId" : 1,
"customerName" : "AMIT"
}
因为children
是一个集合,所以如果您想要一个单独的子级,它应该如下所示:
"children" : [
{
"customerId" : 1,
"customerName" : "AMIT"
}
]
下面是put请求的控制器映射: 当我运行以下来自邮递员的请求时: 我得到以下异常 我可能很简单,但我不明白我错过了什么?
我收到下面的错误信息,请有人帮助或建议如何最好地调试这个。 我正在尝试从REst API调用反序列化Products对象。在我添加代码反序列化Price子类之前,代码一直运行良好。如下所示, 我的Price pojo如下所示, 我编写了一个Junit测试来尝试并模拟该错误,
当然,所有依赖项(子类追加在同一个字符串中)。 从外部API获取数据的代码是; 当我运行代码并试图获取adress“API/3”时,出现以下错误:
我正在试用Spring中的RestTemplate。我试图读入这个JSON数据:JSON数据。数据是一个键值对,其中键是“GeoNames”,值是“GeoName”对象数组。 我有一个Geoname类来处理输入。这个类中还有getter和setter。然后,我有一个应用程序类,它只运行一个main方法来调用一个RestTemplate对象: 编辑 好了,我现在有了这个新类,它现在对JSON数据发出
我试图读取这个json值并将其转换为java对象
无法将Json反序列化为列表集合。我使用的是Lombok,它保存字段变量: 我该怎么修好它?