在使 JSON 反序列化对象处理此类时遇到问题



我正在尝试使用 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 值,我个人会提供一个无参数构造函数。

相关内容

  • 没有找到相关文章

最新更新