我有以下代码和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
答案 0 :(得分:3)
JsonConvert如何知道“seq1”对应于名称而“1”对应于TorrentsInLabel?请看一下JsonObjectAttribute,JsonPropertyAttribute,JsonArrayAttribute
答案 1 :(得分:2)
默认情况下,类序列化为JSON对象,其中类的属性成为JSON对象的属性。
{
Name: "seq",
TorrentsInLabel: 1
}
您正在尝试将其序列化为一个数组,而不是Json.NET序列化程序默认工作的方式。
要获得你想要的东西,你应该创建一个JsonConverter并手动读取和写入JSON for Label,使其成为你想要的(数组)。