当前位置: 首页 > 知识库问答 >
问题:

JSON解析错误:无法构造没有字符串参数构造函数/工厂方法的实例来反序列化字符串值('name')

韶和璧
2023-03-14

我正试图向服务器发出post请求,但我得到以下错误。

{

"name":"Name",
"products":["name"]
}
@Entity
@Table(name = "product")
data class Product(
  var name: String = "",
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "company_id")
  @JsonProperty var company: Company,
  @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
  var id: Long = 0
){
override fun toString(): String{
    return "{name: ${name}, company: ${company.name}}"
  }
}
  @Entity @Table(name = "company")
  data class Company(
  var name: String = "",

  @OneToMany(mappedBy = "company", cascade = arrayOf(CascadeType.ALL), fetch = FetchType.EAGER)
  var products: List<Product> = listOf(),
  @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
  var id: Long = 0
){
   override fun toString(): String{
    return "{name: ${this.name}, products: ${products.map { it->it.name }}}";
  }
}

这是我的控制器。

   @PostMapping("/companies")
   fun saveCompany(@RequestBody companyRequest: CompanyRequest):ResponseEntity<Company>{
     val company = Company()
     company.name = companyRequest.name
     company.products = companyRequest.products
     return ResponseEntity.status(201).body(companyService.saveCompany(company))
    }

我尝试将@jsonproperty添加到我的字段中,但这似乎并不能解决问题

共有1个答案

丌官积厚
2023-03-14

您的json不正确。您在产品中传递字符串数组,而不是对象数组。

试试这个有效载荷

{
"name":"Name",
"products":[{"name": "Name"}]
}
 类似资料: