我在序列化方面遇到困难。我有一个 aspx 页面,它使用 ajax 调用从服务器端返回对象。
期望的输出
ModelPoints=[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]](对于 WebGL)
实际输出 ModelPoints={{Points=[1,2,3]},{Points=[1,2,3]},{Points=[1,2,3]},{Points=[1,2,3]}
申请流程是
Ajax -> Aspx -> WCF -> Aspx -> Ajax
下面是被错误序列化的类。我如何重组它以使其起作用?我不想多次解析 18000+ 点,所以服务器的输出应该是正确的格式。也就是说,我负担不起在客户端解析它。
对象名称 Points 来自参数名称,如何对二维 float 组执行此操作。
下面的类
[Serializable()]
public class ModelPoint
{
public ModelPoint()
{
}
public ModelPoint(float x, float y, float z)
{
_points = new List<Nullable<float>>();
_points.Add(x);
_points.Add(y);
_points.Add(z);
}
private List<Nullable<float>> _points;
public List<Nullable<float>> Points
{
get {return _points;}
set { _points = value; }
}
}
[Serializable()]
public class Model
{
private List<ModelPoint> _modelPoints;
[System.Xml.Serialization.XmlArray("ModelPoints", IsNullable = true)]
[System.Xml.Serialization.XmlArrayItem()]
public List<ModelPoint> ModelPoints
{
get {return _modelPoints;}
set { _modelPoints = value; }
}
}
最佳答案
在json中,方括号[]表示一个数组,大括号{}表示一个对象。所以你想要的输出所代表的数据结构:
[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
是一个二维整数数组。要在 C# 中获得它,您可以使用类似的东西:
List<List<int>> model = new List<List<int>>()
model.Add(new List<int>() {1, 2, 3});
model.Add(new List<int>() {1, 2, 3});
或类似的东西:
int[,] model = new int[5, 3] {{1,2,3},{1,2,3}};
关于c# - 为 Json 序列化一个二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697022/