首页 > 解决方案 > 如何将整数列表作为 json 数据传递给 Spring Boot Rest API?

问题描述

如何传递 customerids 和帐户详细信息数组并在控制器中接收?

下面是控制器的colde。

控制器

@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"])]

标签: javajsonspringcontrollerrest

解决方案


您的 pojo 中的 customerIds 需要一个对象,并且该对象绑定到一个数组。然而,您的 Accounts 类绑定到一个 List ,它是一个数组。

改变这个:

"customerids" : {
    "customreids" : [15,16,17]
},

仅此:

"customerids" : [15,16,17],

并改变这个:

@OneToMany
private List<Customer> customers;

对此:

@OneToMany
private List<Customer> customerIds;

推荐阅读