如何传递customerID和帐户详细信息的数组并在控制器中接收它?
下面是控制器的温度。
控制器
@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].w.s.m.s.defaulthandlerexceptionresolver:已解析[org.springframework.http.converter.httpMessageToradableException:json解析错误:无法反序列化的示例 java.util.ArrayList<java.lang.Integer>
不启动对象令牌;嵌套异常为com.fasterxml.jackson.databind.exc.missmatchdinputException:无法反序列化的示例 java.util.ArrayList<java.lang.Integer>
[source:(pushbackinputstream)处的启动对象令牌不足;行:2,列:21](通过引用链:com.tracker.pojos.customerids[“customerids”])]
2条答案
按热度按时间qnzebej01#
@RequestBody
注解读取整个请求体,在代码中您使用它两次来读取请求体的两个不同部分。你不能那样做。最好定义一个新的dto类,该类包含您需要在请求正文中接收的所有内容,然后您可以从该dto中读取您想要的所有内容,具体操作如下:这就是你的终点:
然后您可以请求如下:
qjp7pelc2#
pojo中的customerid需要一个对象,并且该对象绑定到一个数组。但是accounts类绑定到一个列表,该列表是一个数组。
更改此项:
仅此而已:
改变这个:
对此: