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

C# WebAPI遍历JSON数组生成指定格式HTML表格的问题

问题场景

需开发一个POST接口,请求成功后将提交的POST数据拼接为HTML表格发送通知邮件。

问题描述

现有请求体中Submitter数组包含两个对象,分别存储Obj1、Obj2两组字符串列表。当前遍历逻辑生成的HTML表格会将同一列表内的所有元素横向排列在同一行,不符合预期。
预期效果:Obj1和Obj2的元素按索引一一对应,第N个元素放在同一行的两列中展示。

测试示例

测试JSON数据

{
  "Submitter": [
    {"Obj1": ["苹果", "香蕉", "橙子"]},
    {"Obj2": ["red", "yellow", "orange"]}
  ]
}

问题代码示例(Node.js 环境)

// 错误遍历逻辑示例
const postData = req.body;
const obj1List = postData.Submitter[0].Obj1;
const obj2List = postData.Submitter[1].Obj2;

let htmlTable = `<table border="1"><tr><th>Obj1</th><th>Obj2</th></tr>`;
// 错误点:分别将两个数组整体拼接为单行的多个单元格
htmlTable += `<tr><td>${obj1List.join('</td><td>')}</td><td>${obj2List.join('</td><td>')}</td></tr>`;
htmlTable += `</table>`;

实际输出HTML

<table border="1">
  <tr><th>Obj1</th><th>Obj2</th></tr>
  <tr>
    <td>苹果</td><td>香蕉</td><td>橙子</td>
    <td>red</td><td>yellow</td><td>orange</td>
  </tr>
</table>

渲染后所有元素挤在同一行,列结构完全错乱。

预期输出HTML

<table border="1">
  <tr><th>Obj1</th><th>Obj2</th></tr>
  <tr><td>苹果</td><td>red</td></tr>
  <tr><td>香蕉</td><td>yellow</td></tr>
  <tr><td>橙子</td><td>orange</td></tr>
</table>
修复方案

核心逻辑改为按索引同步遍历两个数组,每组同索引的元素单独生成一行:

const postData = req.body;
const obj1List = postData.Submitter[0].Obj1;
const obj2List = postData.Submitter[1].Obj2;

let htmlTable = `<table border="1"><tr><th>Obj1</th><th>Obj2</th></tr>`;
// 取两个数组的最大长度,兼容长度不一致的边界场景
const maxLen = Math.max(obj1List.length, obj2List.length);
for(let i = 0; i < maxLen; i++) {
  const val1 = obj1List[i] ?? '';
  const val2 = obj2List[i] ?? '';
  htmlTable += `<tr><td>${val1}</td><td>${val2}</td></tr>`;
}
htmlTable += `</table>`;

其他开发语言逻辑同理,仅语法存在差异,以下为Python示例:

obj1_list = post_data['Submitter'][0]['Obj1']
obj2_list = post_data['Submitter'][1]['Obj2']
max_len = max(len(obj1_list), len(obj2_list))
html_table = '<table border="1"><tr><th>Obj1</th><th>Obj2</th></tr>'
for i in range(max_len):
    val1 = obj1_list[i] if i < len(obj1_list) else ''
    val2 = obj2_list[i] if i < len(obj2_list) else ''
    html_table += f'<tr><td>{val1}</td><td>{val2}</td></tr>'
html_table += '</table>'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:24:00