You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JAX-RS接收JSON并打印至控制台:多值JSON接收方案咨询

处理多值类型JSON数据的接收方案

嘿,看你已经成功搞定单个Person对象的JSON接收和打印了,要扩展到多值类型其实很简单,我给你梳理几种最常见的场景,一步步来:

1. 直接接收多个Person的列表(最常用场景)

如果你的需求是一次性接收一批用户数据,直接把接口参数改成List<Person>就行:

步骤1:修改Controller接口

@PostMapping("/batch-persons")
public void receivePersonList(@RequestBody List<Person> personList) {
    // 直接打印整个列表,因为Person有toString,会自动遍历输出每个元素
    System.out.println("Received persons: " + personList);
    // 也可以循环逐个打印
    for (Person person : personList) {
        System.out.println("Person: " + person);
    }
}

步骤2:Postman发送请求

请求体传JSON数组格式:

[
    {"name":"Mickey","surname":"Mouse"},
    {"name":"Donald","surname":"Duck"},
    {"name":"Goofy","surname":"Dog"}
]

记得把请求的Content-Type设为application/json。

控制台输出示例

Received persons: [Person [name=Mickey, surname=Mouse], Person [name=Donald, surname=Duck], Person [name=Goofy, surname=Dog]]
Person: Person [name=Mickey, surname=Mouse]
Person: Person [name=Donald, surname=Duck]
Person: Person [name=Goofy, surname=Dog]

2. 接收包含多值的复杂请求体(比如混合单个对象+列表)

如果你的请求不仅有用户列表,还有其他参数(比如批次ID、备注),可以创建一个DTO类来封装所有字段:

步骤1:创建DTO类

public class PersonBatchRequest {
    private String batchId;
    private List<Person> persons;
    private String remark;

    // 生成getter、setter方法
    // 生成toString方法(和你的Person类一样,方便打印)
    
    // 如果你用Lombok,直接加@Data注解就能自动生成这些方法
}

步骤2:修改Controller接口

@PostMapping("/complex-batch")
public void receiveComplexRequest(@RequestBody PersonBatchRequest batchRequest) {
    System.out.println("Received complex request: " + batchRequest);
}

步骤3:Postman发送请求

请求体传嵌套JSON:

{
    "batchId": "BATCH_20240520",
    "remark": "这是一批测试用户",
    "persons": [
        {"name":"Mickey","surname":"Mouse"},
        {"name":"Donald","surname":"Duck"}
    ]
}

控制台输出示例

Received complex request: PersonBatchRequest [batchId=BATCH_20240520, persons=[Person [name=Mickey, surname=Mouse], Person [name=Donald, surname=Duck]], remark=这是一批测试用户]

3. 接收键值对类型的多值(比如按别名存储用户)

如果需要接收类似{ "别名": 用户对象 }的键值对结构,可以用Map<String, Person>作为参数:

步骤1:修改Controller接口

@PostMapping("/person-map")
public void receivePersonMap(@RequestBody Map<String, Person> personMap) {
    System.out.println("Received person map: " + personMap);
}

步骤2:Postman发送请求

请求体传键值对JSON:

{
    "mouse": {"name":"Mickey","surname":"Mouse"},
    "duck": {"name":"Donald","surname":"Duck"}
}

控制台输出示例

Received person map: {mouse=Person [name=Mickey, surname=Mouse], duck=Person [name=Donald, surname=Duck]}

几个关键注意点

  • 确保你的项目已经集成了JSON解析器(Spring Boot默认用Jackson,无需额外配置;如果是传统Spring项目,要确保Jackson相关依赖已引入)
  • 所有实体类/DTO都要有getter、setter方法(不然JSON解析器无法赋值),以及toString方法(方便你打印查看)
  • Postman请求必须设置Content-Type: application/json,不然后端无法识别JSON格式

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:14:19