c# - 为 Json 序列化一个二维数组

标签 c# asp.net ajax serialization

我在序列化方面遇到困难。我有一个 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/

相关文章:

c# - 根据特定条件从 C# 列表中删除列表

c# - 如何将字符串分成数组

c# - 使用 lambda 查询获取前 5 个值

c# - Azure IQueueClient : How do you simulate incoming messages?

javascript - 除表头外的表无法正常工作 html

php - 添加文本时停止闪烁(清除框并重新填充)的算法

c# - 使用 WCF 服务应用程序从表单获取 POST 数据

c# - 在 WPF 中实现 CheckBoxes 的 ListBox

c# - IIS 7.5 访问数据库时失败

javascript - 重新调整有效 JSON 时调用的 Ajax 错误回调