You need to enable JavaScript to run this app. 如何在Spring Boot中格式化JSON列表响应,按指定字段封装列表成员
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Boot中格式化JSON列表响应,按指定字段封装列表成员

注意事项

你给出的期望响应示例存在JSON语法错误:数组结构内不能直接声明键值对,合法的索引结构需要将内部的数组替换为对象,参考格式如下:

[
  {
    "Demon Fiend": {
      "createdAt": "2021-08-21T05:04:45.000+00:00",
      "updatedAt": "2021-08-21T05:04:45.000+00:00",
      "id": 1,
      "cardName": "Demon Fiend",
      ...
    },
    "Stack": {
      "createdAt": "2021-08-21T05:04:58.000+00:00",
      "updatedAt": "2021-08-21T05:04:58.000+00:00",
      "id": 2,
      "cardName": "Stack",
      ...
    },
    "Overflow": {
      "createdAt": "2021-08-21T05:05:00.000+00:00",
      "updatedAt": "2021-08-21T05:05:00.000+00:00",
      "id": 3,
      "cardName": "Overflow",
      ...
    }
  }
]

实现代码

根据你常用的后端语言选择对应方案即可,所有方案都支持切换id/cardName作为索引键:

  • JavaScript/Node.js
// 原始查询结果结构为 [[...卡片列表]]
const originCardList = response[0];
// 以cardName为索引,换成card.id即可用id作为键
const cardMap = originCardList.reduce((prev, curr) => {
  prev[curr.cardName] = curr;
  return prev;
}, {});
// 保持外层数组嵌套的最终结果
const finalResponse = [cardMap];
  • Python
# 原始查询结果结构为 [[...卡片列表]]
origin_card_list = response[0]
# 以cardName为索引,换成card["id"]即可用id作为键
card_map = {card["cardName"]: card for card in origin_card_list}
# 保持外层数组嵌套的最终结果
final_response = [card_map]
  • Java
// 原始查询结果结构为 List<List<Card>>,Card为卡片实体类
List<Card> originCardList = response.get(0);
// 以cardName为索引,换成Card::getId即可用id作为键
Map<String, Card> cardMap = originCardList.stream()
        .collect(Collectors.toMap(Card::getCardName, Function.identity()));
// 保持外层数组嵌套的最终结果
List<Map<String, Card>> finalResponse = Collections.singletonList(cardMap);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:54:04