【发布时间】:2020-12-18 08:11:06
【问题描述】:
如何传递customerids和帐户详细信息数组并在控制器中接收?
下面是控制器的冷门。
控制器
@PostMapping("/createaccount")
public String createAccount(@RequestBody Customerids customerids,@RequestBody Account account)
{
return accountservices.createAccountService(customerids, account);
}
只是想知道下面给出的json格式对吗?
JSON 已通过:
{
"customerids" : {
"customreids" : [15,16,17]
},
"account":{
"type": "savings",
"individual":"no",
"balance": 3000.0
}
}
帐号:
package com.tracker.pojos;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Entity
@Table(name="Account")
public class Account {
@Id
private String account_number;
@Column
private String type;
@Column
private String individual;
@Column
private double balance;
@OneToMany
private List<Customer> customers;
}
**客户ID:**
package com.tracker.pojos;
import java.util.List;
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class Customerids {
List<Integer> customerids;
}
抛出错误:
2020-12-18 13:43:02.491 WARN 10776 --- [nio-8080-exec-2] .wsmsDefaultHandlerExceptionResolver:已解决 [org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析错误:无法反序列化 @987654325 的实例@ out of START_OBJECT 令牌;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize of java.util.ArrayList<java.lang.Integer> out of START_OBJECT token
在 [来源:(PushbackInputStream); line: 2, column: 21](通过引用链:com.tracker.pojos.Customerids["customerids"])]
【问题讨论】:
-
一个请求只有一个主体。您希望如何将相同的内容编组为 2 个班级?这显然行不通。
-
我怎样才能让它工作?是否可以在一个请求中发送两个对象?
-
创建一个包含所有信息的 DTO,然后将其映射到您的实体。
标签: java json spring controller rest