C# Web API遍历JSON对象数组生成HTML表格问题求助
问题核心原因
- 你传入的
Submitter数组每个元素仅包含单个属性(要么是Obj1要么是Obj2),你定义的SubmitterObjects模型会自动将不存在的属性赋值为null,这就是输出中出现空<td>的原因。 - 你需要先分别提取
Obj1和Obj2对应的数组,再按索引配对生成表格行,而非直接遍历Submitter数组。
修正后代码
using Newtonsoft.Json.Linq; public class TestingController : ControllerBase { public List<JObject> Submitter { get; set; } public string POST([FromBody] TestingController data) { // 提取Obj1对应的字符串数组 List<string> obj1List = data.Submitter .FirstOrDefault(x => x.ContainsKey("Obj1"))? .GetValue("Obj1") .ToObject<List<string>>() ?? new List<string>(); // 提取Obj2对应的字符串数组 List<string> obj2List = data.Submitter .FirstOrDefault(x => x.ContainsKey("Obj2"))? .GetValue("Obj2") .ToObject<List<string>>() ?? new List<string>(); // 取两个数组的最大长度,避免短数组越界 int maxRowCount = Math.Max(obj1List.Count, obj2List.Count); // 拼接表格表头 string body = "<table><thead><tr><th>Object 1</th><th>Object 2</th></tr></thead><tbody>"; // 按索引逐行生成表格内容 for (int i = 0; i < maxRowCount; i++) { string obj1Val = i < obj1List.Count ? obj1List[i] : string.Empty; string obj2Val = i < obj2List.Count ? obj2List[i] : string.Empty; body += $"<tr><td>{obj1Val}</td><td>{obj2Val}</td></tr>"; } body += "</tbody></table>"; return body; } }
实现效果
上述代码运行后返回的HTML表格,完全匹配你需要的展示效果:
| Object 1 | Object 2 |
|---|---|
| test | test3 |
| test2 | test4 |
内容的提问来源于stack exchange,提问作者yush
相关产品推荐
相关产品推荐

