我需要将矩阵从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++;
}
输出
预期的输出格式
[
["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]
]
如何传递序列化的多维数组?
答案 0 :(得分:1)
使用JSON.NET
string json_string = JsonConvert.SerializeObject(arrayTemperatura);
它可以根据需要序列化多维数组。
然后在javascript中,您可以使用JSON.parse
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 >