如何将C#二维数组转换为JSON对象?

14

如果我在C#中有一个二维数组,如何将其转换为包含二维数组的JSON字符串?

例如:

int[,] numbers = new int[8,4];
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(numbers);

在JSON对象中提供一个扁平的一维数组。 Microsoft文档指出:

“多维数组被序列化为一维数组,应将其用作平面数组。”


仅供娱乐,我想补充一下Newtonsoft的Json.NET不会出现这种序列化问题,对于2021年流行的用例,ASP.NET Core甚至提供了一种切换方式 - ruffin
1个回答

17
你可以使用锯齿数组(jagged array)而不是二维数组,它的定义如下:

int[][] numbers = new int[8][];

for (int i = 0; i <= 7; i++) {
   numbers[i] = new int[4];
   for (int j = 0; j <= 3; j++) {
      numbers[i][j] =i*j;
   }
}
JavascriptSerializer 将把它序列化成形式为 [[#,#,#,#],[#,#,#,#],等等...] 的格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接