JSON.Net错误地将二维数组序列化为一维

sgt*_*gtz 7 .net c# json.net

试图将二维数组转换为二维JSON.Net数组.

下面的代码有什么问题吗?或者JSON.Net不支持这个吗?

        var A = new int[2, 4] { { 1, 1, 1, 1 }, { 2, 2, 2, 2 } };

        Console.WriteLine(JsonConvert.SerializeObject(A));

        // CONSOLE: [1,1,1,1,2,2,2,2]  
        //
        // NB. displays a one dimensional array 
        // instead of two e.g. [[1,1,1,1],[2,2,2,2]]
Run Code Online (Sandbox Code Playgroud)

Tim*_*imm 10

Json.Net 4.5开始,支持Relase 8多维数组.

所以你的例子现在可以工作并生成以下JSON:

[ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ] ]
Run Code Online (Sandbox Code Playgroud)


Str*_*ior 9

Javascript没有与C#相同的2D阵列概念.为了获得这里描述的数组,你需要创建一个数组数组.

// output: [[1,1,1,1],[2,2,2,2]]
var a = new int[][] { new[]{ 1, 1, 1, 1 }, new[]{ 2, 2, 2, 2 } };
Run Code Online (Sandbox Code Playgroud)

更新:

听起来 JSON.NET现在将多维数组转换为JSON中的数组数组,因此OP中的代码将与您使用上面的代码一样工作.

  • 这个答案已经过时了.看@Timm在下面 (2认同)