如何将Json表(数组数组)数据转换为c#对象集合

如何将Json表(数组数组)数据转换为c#对象集合,c#,json,json.net,C#,Json,Json.net,我有一个json格式的表状(数组数组)对象,我想将其转换为c#对象的集合 { "Columns": [ { "id": 1, "name": "column name 1", "other stuff": "blah blah" }, { "id": 2, "name": "column name 2",

我有一个json格式的表状(数组数组)对象,我想将其转换为c#对象的集合

{
    "Columns": [
        {
            "id": 1,
            "name": "column name 1",
            "other stuff": "blah blah"
        },
        {
            "id": 2,
            "name": "column name 2",
            "other stuff": "blah blah"
        },
        {
            "id": 3,
            "name": "column name 3",
            "other stuff": "blah blah"
        }
    ],
    "Data": [
         [
             "blah bla",
             "bloop",
             1
         ],
        [
            "t",
            "another random value",
            5
        ],
        [
            "foo",
            "bar",
            5
        ],
        [
            "something valuable",
            "value2",
            5
        ]
    ]
}
我想将其序列化到一个对象集合或数据表中,类似于以下内容:

public class Row
{
     public string ColumnName1 {get;set;}
     public string ColumnName2 {get;set;}
     public int ColumnName3 {get;set;}
}

var jsonString = "same as above just properly escaped"; 
list<Row> rows = Deserialize(jsonString);
但我无法控制,因此…

您可以使用Json.Net的API将Json数据解析为您想要的格式:

JObject jo = JObject.Parse(json);
List<Row> rows = jo["Data"]
    .Children<JArray>()
    .Select(ja => new Row
    {
        ColumnName1 = (string)ja[0],
        ColumnName2 = (string)ja[1],
        ColumnName3 = (int)ja[2]
    })
    .ToList();
JObject jo=JObject.Parse(json);
列表行=jo[“数据”]
.儿童()
.选择(ja=>新行
{
ColumnName1=(字符串)ja[0],
ColumnName2=(字符串)ja[1],
ColumnName3=(int)ja[2]
})
.ToList();
Fiddle:

您可以使用Json.Net的API将Json数据解析为您想要的格式:

JObject jo = JObject.Parse(json);
List<Row> rows = jo["Data"]
    .Children<JArray>()
    .Select(ja => new Row
    {
        ColumnName1 = (string)ja[0],
        ColumnName2 = (string)ja[1],
        ColumnName3 = (int)ja[2]
    })
    .ToList();
JObject jo=JObject.Parse(json);
列表行=jo[“数据”]
.儿童()
.选择(ja=>新行
{
ColumnName1=(字符串)ja[0],
ColumnName2=(字符串)ja[1],
ColumnName3=(int)ja[2]
})
.ToList();
Fiddle:

您可以使用Json.Net的API将Json数据解析为您想要的格式:

JObject jo = JObject.Parse(json);
List<Row> rows = jo["Data"]
    .Children<JArray>()
    .Select(ja => new Row
    {
        ColumnName1 = (string)ja[0],
        ColumnName2 = (string)ja[1],
        ColumnName3 = (int)ja[2]
    })
    .ToList();
JObject jo=JObject.Parse(json);
列表行=jo[“数据”]
.儿童()
.选择(ja=>新行
{
ColumnName1=(字符串)ja[0],
ColumnName2=(字符串)ja[1],
ColumnName3=(int)ja[2]
})
.ToList();
Fiddle:

您可以使用Json.Net的API将Json数据解析为您想要的格式:

JObject jo = JObject.Parse(json);
List<Row> rows = jo["Data"]
    .Children<JArray>()
    .Select(ja => new Row
    {
        ColumnName1 = (string)ja[0],
        ColumnName2 = (string)ja[1],
        ColumnName3 = (int)ja[2]
    })
    .ToList();
JObject jo=JObject.Parse(json);
列表行=jo[“数据”]
.儿童()
.选择(ja=>新行
{
ColumnName1=(字符串)ja[0],
ColumnName2=(字符串)ja[1],
ColumnName3=(int)ja[2]
})
.ToList();

Fiddle:

您的数据对象没有键吗???json中的“数据”对象是一个数组数组,因此没有键。从概念上讲,键存储在columns数组中,它们是已知的/静态的。t数据对象是否没有键???json中的“数据”对象是数组数组,因此没有键。从概念上讲,键存储在columns数组中,它们是已知的/静态的。t数据对象是否没有键???json中的“数据”对象是数组数组,因此没有键。从概念上讲,键存储在columns数组中,它们是已知的/静态的。t数据对象是否没有键???json中的“数据”对象是数组数组,因此没有键。从概念上讲,键存储在columns数组中,它们是已知的/静态的。我真的希望这足够普遍,我只是缺少了一些属性或东西,但这很简单/干净。谢谢我真的希望这足够普遍,我只是缺少了一些属性或东西,但这很简单/干净。谢谢我真的希望这足够普遍,我只是缺少了一些属性或东西,但这很简单/干净。谢谢我真的希望这足够普遍,我只是缺少了一些属性或东西,但这很简单/干净。谢谢