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

如何用JSON简单传输二维数组?适配.NET C#后端场景

二维棋盘数组JSON传输及.NET控制器接收方案

JSON格式错误原因

你提供的示例JSON不符合语法规范:board 字段仅绑定了第一行的数组,后续的行数组直接写在了外层JSON对象中,属于无属性键的非法结构,所以无法被正常解析。

全量棋盘传输实现方案

正确的二维数组JSON结构

标准JSON支持二维数组格式,10x10的棋盘可以按如下结构编写,无需手动拆分每个单元格:

{
  "board": [
    ["red", "black", null, /* 第0行剩余9个元素 */],
    [null, "black", null, /* 第1行剩余9个元素 */],
    /* 剩余8行的数组 */
  ]
}

.NET控制器接收配置

ASP.NET Core 自带的序列化组件(System.Text.Json/Newtonsoft.Json)都支持二维数组的自动绑定,你只需要定义对应结构的接收模型即可:

// 接收请求的视图模型
public class BoardUpdateRequest
{
    public string[][] Board { get; set; }
}

// 控制器接口
[HttpPost("update-board")]
public async Task<IActionResult> UpdateBoard([FromBody] BoardUpdateRequest request)
{
    // 直接按C#二维数组的用法取值即可
    var targetCell = request.Board[0][0]; // 对应示例中的"red"
    // 后续处理业务逻辑、持久化游戏状态
    return Ok();
}

前端自动生成JSON

完全不需要手动拼写大棋盘的JSON内容,前端直接操作JS二维数组,调用JSON.stringify即可自动生成符合要求的序列化结果:

// 初始化10x10空棋盘
const gameBoard = Array(10).fill(null).map(() => Array(10).fill(null))
// 正常执行落子逻辑
gameBoard[2][1] = "black"
// 直接序列化提交
const requestBody = JSON.stringify({ board: gameBoard })
// 调用接口提交即可

优化方案:增量更新

你提到的仅传输落子变更的方案效率更高,适合线上生产场景,仅需传递坐标和棋子信息即可:

{
  "gameId": 1001,
  "x": 2,
  "y": 1,
  "chessColor": "black"
}

后端拿到参数后直接更新对应游戏的棋盘指定位置即可,传输体积比全量传输小90%以上,同时也能避免大数组序列化/反序列化的性能损耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:15:03