0
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パンターが助けてください!

エラータイプ'ConsoleApplication1.Program+ Row'は、アレイの逆シリアル化ではサポートされていません。

4

1 に答える 1

4

まず、次のようになります。

タイプ「行」は、配列の逆シリアル化ではサポートされていません。

のJSONは、ネストされた配列[ [を示しています。したがって、JSONを変更するか、:を作成します。rowsRow[][]

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

今、私たちは得る:

ContentPanel1はInt32の有効な値ではありません。

良い...

public int id { get; set; }

vs

""id"": ""ContentPanel1""

今:"ContentPanel1"ではありませんint。:を作成idstringます

public string id { get; set; }
于 2012-10-23T10:04:45.257 に答える