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

Postman批量提交Anggota数据时JSON反序列化错误的解决方法

问题分析与解决方案

错误原因

  1. 类型不匹配:你的createAnggota接口声明接收单个AnggotaDTO对象,但请求体传递的是AnggotaDTO数组,Jackson无法将数组反序列化为单个对象,因此抛出类型不匹配的解析错误。
  2. JSON格式不规范:请求体中的键名未使用双引号包裹,不符合JSON语法规范,虽然部分工具可能兼容,但严格来说会导致解析异常。

解决方案

1. 修改Controller,新增批量创建接口

将接口参数改为接收List<AnggotaDTO>,并实现批量保存逻辑:

// API 批量创建Anggota
@PostMapping("/anggota/create/batch")
public Map<String, Object> createBatchAnggota(@RequestBody List<AnggotaDTO> anggotaDTOList) {
    Map<String, Object> mapResult = new HashMap<>();
    
    List<Anggota> anggotaList = new ArrayList<>();
    for (AnggotaDTO dto : anggotaDTOList) {
        Anggota anggota = convertAnggotaToEntity(dto);
        // 若ModelMapper已正确映射字段,可省略以下两行手动赋值
        anggota.setAnggotaNama(dto.getAnggotaNama());
        anggota.setAnggotaUsia(dto.getAnggotaUsia());
        anggotaList.add(anggota);
    }
    
    // 使用JPA的批量保存方法
    List<Anggota> savedAnggotaList = anggotaRepository.saveAll(anggotaList);
    
    mapResult.put("message", "批量创建成功");
    mapResult.put("data", savedAnggotaList);
    mapResult.put("total", savedAnggotaList.size());
    
    return mapResult;
}

2. 修正请求体的JSON格式

确保所有键名用双引号包裹,符合JSON语法要求:

[
  {
      "anggotaNama": "AAA",
      "anggotaUsia": 16
  },
  {
      "anggotaNama": "BBB",
      "anggotaUsia": 17
  },
  {
      "anggotaNama": "CCC",
      "anggotaUsia": 18
  } 
]

3. Postman请求配置

  • 请求方法:POST
  • 请求URL:/api/anggota/create/batch
  • 请求体类型:Raw → JSON
  • 粘贴修正后的JSON数组

额外优化建议

  • 保留原有的单个创建接口,新增批量接口,同时支持两种创建方式。
  • 检查Anggota实体与AnggotaDTO的字段映射,若字段名完全一致,可删除手动赋值代码,直接依赖ModelMapper的自动映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:48:23