如何将序列化的多维数组从C#传递给Javascript

时间:2019-05-14 17:50:24

标签: javascript c# asp.net

我需要将矩阵从C#代码传递到javascript,但是当矩阵传递到视图时,它会转换为一维数组。换句话说,我的多维数组被序列化了。

C#代码

List<leituras> listaleituras = new List<leituras>();
public object[,] arrayTemperatura = new object[5, 3];
public JavaScriptSerializer javaSerial = new JavaScriptSerializer();

foreach (var leitura in listaleituras)
{
    arrayTemperatura[i, 0] = leitura.Data.Month.ToString() + "/" + leitura.Data.Year.ToString();
    arrayTemperatura[i, 1] = leitura.Sensor_temperatura;
    arrayTemperatura[i, 2] = leitura.Sensor_temperatura;
    i++;
}

输出

enter image description here

预期的输出格式

[  
  ["09/18",95,95],["10/18",257,257],["11/18",1368,1368],["12/18",1574,1574],
  ["01/19",2437,2437],["02/19",3105,3105],["1/3",2096,2096],["2/3",1098,1098],
  ["4/3",361,361],["6/3",1993,1993],["7/3",2744,2744],["8/3",2891,2891],
  ["9/3",1797,1797],["11/3",3027,3027],["12/3",2996,2996],["13/3",2766,2766],
  ["14/3",3067,3067],["15/3",3043,3043],["16/3",2374,2374]
]

如何传递序列化的多维数组?

2 个答案:

答案 0 :(得分:1)

使用JSON.NET

string json_string = JsonConvert.SerializeObject(arrayTemperatura);

它可以根据需要序列化多维数组。

然后在javascript中,您可以使用JSON.parse

对json进行反序列化
var multidimentionArray = JSON.parse( json_string );

另请参阅this

答案 1 :(得分:0)

使用锯齿状数组而不是二维数组。

首先声明您的数组而不初始化它:public object[][] arrayTemperatura;

然后在您的while循环之后执行此操作:

arrayTemperatura = new object[listaleituras.length][];

foreach (var leitura in listaleituras)
{
    arrayTemperatura[i] = new object[3];
    arrayTemperatura[i][0] = leitura.Data.Month.ToString() + "/"+ leitura.Data.Year.ToString();
    arrayTemperatura[i][1] = leitura.Sensor_temperatura;
    arrayTemperatura[i][2] = leitura.Sensor_temperatura;
    i++;
}

或者,您可以使用Json.NET serializer而不是JavaScriptSerializer-我创建了一个示例来表明它的行为符合您在问题中的期望:https://dotnetfiddle.net/2QBP7J