在我的搜索中,我无法找到一个直截了当的例子。我的数组在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"});
将开始填充我的列表的父母,但我如何嵌套孩子?
答案 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”的字符串可能正是您要找的。 p>