将JSON解析为C#对象

时间:2012-10-23 10:01:46

标签: c# json javascriptserializer

static void Main(string[] args)
{
    var json = @"{ ""rows"": [
                [
                    {
                        ""colspan"": 4,
                        ""id"": ""ContentPanel1""
                    },
                    {
                        ""colspan"": 8,
                        ""id"": ""ContentPanel2""
                    }
                ],
                [
                    {
                        ""colspan"": 12,
                        ""id"": ""ContentPanel3""
                    }
                ]
            ]}";

    var json_serializer = new JavaScriptSerializer();
    var jsonData = json_serializer.Deserialize<Grid>(json);

    Console.ReadKey();
}

[Serializable]
public class Grid
{
    public List<Row> rows { get; set; }
}

[Serializable]
public class Row
{
    public int colspan { get; set; }
    public int id { get; set; }
    public List<Row> rows { get; set; }
}

我正在尝试将此JSON字符串转换为C#对象,但我发现它很难,因为错误消息不是很直观。任何JSON投注者请帮忙!

  

ERROR类型'ConsoleApplication1.Program + Row'不支持反序列化数组。

1 个答案:

答案 0 :(得分:4)

首先我们得到:

  

阵列的反序列化不支持“行”类型。

[ [的JSON显示嵌套数组。因此,要么更改JSON,要么rows成为Row[][]

public Row[][] rows { get; set; }

现在我们得到:

  

ContentPanel1不是Int32的有效值。

以及...

public int id { get; set; }

VS

""id"": ""ContentPanel1""

现在:"ContentPanel1"不是int。将id设为string

public string id { get; set; }