如何在C#中对多维数组/列表进行硬编码?

时间:2014-11-17 16:57:42

标签: javascript c# arrays string list

在我的搜索中,我无法找到一个直截了当的例子。我的数组在Javascript中如下:

            var body = [ 
            {
                "key": "1",
                "name": "folder 1",
                "child": {
                    "key": "5",
                    "name": "(1) nested file",
                    "child": {
                        "key": "12",
                        "name": "(1) nested  file"
                    }
                }
            },
            {
                "key": "2",
                "name": "folder 2",
                "child": {
                    "key": "6",
                    "name": "(1) nested file"
                }
            }
        ];

如何将其转换为C#的字符串/列表?所以:

List<DTO.GenMenuList> body= new List<DTO.GenMenuList>(); 
body.Add(new DTO.GenMenuList() {key=1,name="folder 1"});

body.Add(new DTO.GenMenuList() {key=2, name="folder 2"});

将开始填充我的列表的父母,但我如何嵌套孩子?

2 个答案:

答案 0 :(得分:2)

这只是一个类实例数组,所以它不是多维的。

这可以解决您的问题......

public class Item {
    public int Key { get; set; }
    public string Name { get; set; }
    public Item Child { get; set; }
}

List<Item> myList = new List<Item>();

如果项目当前没有子项,则子项可以为null,如果您要将此列表序列化为Javascript则会获得数组。

还有这个网站:http://json2csharp.com/会从你的json中为你生成pocos ...但是我上面的代码会更好一些。 (你不需要第二个孩子)。

答案 1 :(得分:0)

Json.NET(来自Newtonsoft)是一种序列化/反序列化JSON数据的好方法。您可以通过Visual Studio中的NuGet获取它。有关如何引用它,请参阅this

根据BenjaminPaul的回答,您可以执行以下操作:

        public class Item
        {
            public string key { get; set; }
            public string name { get; set; }
            public Item child { get; set; }

            public Item(string ItemKey, string ItemName)
            {
                this.key = ItemKey;
                this.name = ItemName;
            }
        }

        public static void Test()
        {
            List<Item> data = new List<Item>();

            Item key1 = new Item("1", "folder 1");
            data.Add(key1);

            Item key5 = new Item("5", "(1) nested file");
            key1.child = key5;

            Item key12 = new Item("12", "(1) nested file");
            key5.child = key12;

            Item key2 = new Item("2", "folder 2");
            data.Add(key2);

            Item key6 = new Item("6", "(1) nested file");
            key2.child = key6;

            string serialized = Newtonsoft.Json.JsonConvert.SerializeObject(data);
            List<Item> deserialized = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Item>>(serialized);
        }

名为“serialized”的字符串可能正是您要找的。