我正在尝试使用Json.Net反序列化以下类并收到错误:
转换值时出错" abc"输入' System.UInt16'。路径' typestr'
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\"}");
有谁知道如何解决这个错误?
答案 0 :(得分:3)
您为JSON提供了typestr
的属性,该属性具有字符串值。您的班级中还有两个名为typestr
的部分:
string
)ushort
)Json.NET可以使用其中任何一个,但显然构造函数参数优先 - 这是有道理的,因为你还没有提供任何其他构造函数。
你可以:
其中任何一个似乎都可以解决问题 - 如果您不希望在构造函数调用中使用JSON值,我个人会提供无参数构造函数。