我正在尝试使用 Json.Net 反序列化以下类并收到错误:
将值"abc"转换为类型"System.UInt16"时出错。路径"类型str"
public class TestClass
{
[JsonIgnore]
public static ushort TEST_TYPE_A = 0;
[JsonIgnore]
public static ushort TEST_TYPE_B = 1;
[JsonProperty("typestr")]
public string typestr {get; set;}
[JsonProperty("testvalue")]
public string testvalue {get; set;}
[JsonProperty("bob")]
public string bob {get; set;}
public TestClass(ushort typestr)
{
this.typestr = types[typestr];
}
public void Init() { }
}
TestClass a = JsonConvert.DeserializeObject<TestClass>("{"typestr": "abc"}");
有谁知道如何解决此错误?
你为 JSON 提供了一个属性 typestr
,该属性具有字符串值。你的班级中还有两部分叫做typestr
:
- 属性(类型
string
) - 构造函数参数(类型
ushort
)
Json.NET 可以使用其中任何一个,但显然构造函数参数优先 - 鉴于您没有提供任何其他构造函数,这是有道理的。
您可以:
- 更改构造函数参数的名称
- 提供无参数构造函数
这两种方法似乎都可以解决问题 - 如果您不希望在构造函数调用中使用 JSON 值,我个人会提供一个无参数构造函数。