我想以System.Security.Claims.Claim下列方式反序列化一个序列化的对象:
{
"Issuer" : "LOCAL AUTHORITY",
"OriginalIssuer" : "LOCAL AUTHORITY",
"Type" : "http://my.org/ws/2015/01/identity/claims/mytype",
"Value" : "myvalue",
"ValueType" : "http://www.w3.org/2001/XMLSchema#string"
}
Run Code Online (Sandbox Code Playgroud)
我得到的是JsonSerializationException:
无法找到用于System.Security.Claims.Claim类型的构造函数.一个类应该有一个默认的构造函数,一个带参数的构造函数或一个用JsonConstructor属性标记的构造函数.
经过一些调查后,我终于理解了上面消息中一个的含义:JSON反序列化器找不到正确的构造函数 - 在Claim类型的情况下- 带有参数的多个构造函数(尽管存在一个构造函数,其参数完全匹配上述属性).
有没有办法告诉反序列化器选择哪个构造函数而不将该JsonConstructor属性添加到该mscorlib类型?
几年前, Daniel Halan用Json.NET补丁解决了这个问题.这些天有没有办法解决这个问题而不修改Json.NET?