JSON.net与JsonConvert.DeserializeObject的问题

时间:2009-10-12 10:24:11

标签: c# json serialization json.net

我有以下代码和json:

public class Labels
{
    public Labels()
    {}

    public Label[] Label {get;set;}
}

public class Label
{
    public Label()
    { }
    public string Name { get; set; }
    public int TorrentsInLabel { get; set; }
}

//...
Labels o = JsonConvert.DeserializeObject<Labels>(json);
//...


{"label": 
[
  ["seq1",1]
  ,["seq2",2]
]}

我希望这个数组[“seq1”,“1”]反序列化为Label对象。我错过了什么?一些属性?

当我运行时,我得到异常:期望JsonArrayContract类型为'test_JSONNET.Label',得到'Newtonsoft.Json.Serialization.JsonObjectContract'。

TNX

GG

2 个答案:

答案 0 :(得分:3)

JsonConvert如何知道“seq1”对应于名称而“1”对应于TorrentsInLabel?请看一下JsonObjectAttribute,JsonPropertyAttribute,JsonArrayAttribute

答案 1 :(得分:2)

默认情况下,类序列化为JSON对象,其中类的属性成为JSON对象的属性。

{
    Name: "seq",
    TorrentsInLabel: 1
}

您正在尝试将其序列化为一个数组,而不是Json.NET序列化程序默认工作的方式。

要获得你想要的东西,你应该创建一个JsonConverter并手动读取和写入JSON for Label,使其成为你想要的(数组)。