C# 为二维栅格创建文件结构

C# 为二维栅格创建文件结构,c#,json,a-star,C#,Json,A Star,对于我的A*算法,我想创建一个设置文件,其中包含创建网格的循环的数据信息 目前,我的细胞只需要知道他们的领域成本,但这可能会改变以后。我想保持信息的灵活性 一种简单的方法是创建一个字节数组 但我只能将现场成本存储在那里。我想用JSON来做这个 { "1": [ // my first row { "x": 1, // cell one in row one "cost": 1 }, { "x": 2, "cost":

对于我的A*算法,我想创建一个设置文件,其中包含创建网格的循环的数据信息

目前,我的细胞只需要知道他们的领域成本,但这可能会改变以后。我想保持信息的灵活性

一种简单的方法是创建一个字节数组

但我只能将现场成本存储在那里。我想用JSON来做这个

{
  "1": [ // my first row
    {
      "x": 1, // cell one in row one
      "cost": 1
    },
    {
      "x": 2,
      "cost": null
    },
    {
      "x": 3,
      "cost": 3
    },
    {
      "x": 4,
      "cost": null
    },
    {
      "x": 5,
      "cost": 2
    }
  ],
  "2": [ // my second row
    {
      "x": 1, // cell one in row two
      "cost": 3
    },
    {
      "x": 2,
      "cost": 2
    },
    {
      "x": 3,
      "cost": null
    },
    {
      "x": 4,
      "cost": 1
    },
    {
      "x": 5,
      "cost": 2
    }
  ]
}
通过使用JSON,我可以将更多数据存储到单元格中,但这种结构似乎比简单的字节数组复杂得多


有更好的解决方案吗?

不要对文本文件使用JSON

String input = File.ReadAllText( @"c:\myfile.txt" );

int i = 0, j = 0;
int[,] result = new int[10, 10];
foreach (var row in input.Split('\n'))
{
    j = 0;
    foreach (var col in row.Trim().Split(' '))
    {
        result[i, j] = int.Parse(col.Trim());
            j++;
        }
        i++;
    }

为什么不是一个类数组?是一种获取对象并将其状态保持在某个位置的行为,对此有内置的支持。这如何能够为每个单元格提供多条信息?很简单,您分配的每个值都映射到一个字典。因此,如果我读入0,它是一个打开的平铺,如果我读入1,它是一个关闭的平铺,2=门等等。字典可以在你的代码中硬编码定义。