如何传递客户ID和帐户详细信息的数组并在控制器中接收它?
以下是控制器的冷气。
控制者
@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;
}
**客户编号:**
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分析错误:无法反序列化以下实例java.util.ArrayList<java.lang.Integer>
超出START_OBJECT令牌;嵌套的异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法java.util.ArrayList<java.lang.Integer>
在[Source:(PushbackInputStream);上从START_OBJECT令牌中反序列化实例。第2行,第21列](通过参考链:com.tracker.pojos.Customerids [“ customerids”]))
@RequestBody
注解读取了整个请求正文,在您的代码中您两次使用它来读取请求正文的两个不同部分。您无法实现那样的目标。最好定义新的DTO类,该类包含您需要在请求正文中接收的所有内容,然后您可以从该DTO中读取所需的所有内容,可以通过以下方式完成:
@Getter
@Setter
public class CreateAccountModel {
private Integer[] customerIds;
private Account account;
}
这将是您的终点:
@PostMapping("/createaccount")
public String createAccount(@RequestBody CreateAccountModel createAccountModel) {
return accountservices.createAccountService(
createAccountModel.getCustomerIds(),
createAccountModel.getAccount());
}
然后,您可以按照以下方式提出请求:
curl -i -H "Content-Type:application/json" -d '{"customerIds": [1,2,3], "account": {}}' http://localhost:8080/createaccount
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句