我正在尝试使用Newtonsoft反序列化JSON。然而,当反序列化类时"Opc.Ua.NodeId"System.Type。它会抛出一个异常"转换值错误"。键入"System.Type"。路径的SessionId.Type !"。
当有System。布尔值或其他系统类型,转换时不会出现任何错误。
{
"Status": {
"Type": "System.Boolean",
"Value": true
},
"ServerId": {
"Type": "System.String",
"Value": {
"olaBola": "ns=3;i=422970276"
}
},
"SessionId": {
"Type": "Opc.Ua.NodeId",
"Value": {
"Identifier": "ns=3;i=422970276"
}
}
}
类:
public class ExtendedAttribute
{
public Type? Type { get; set; }
public object? Value { get; set; }
}
代码:
JsonConvert.DeserializeObject<Dictionary<string, ExtendedAttribute>>(jsonText);
如何解决这个问题?
你可以尝试用这段代码将一个包含类名的字符串转换为Type,因为Type是c#中保留的单词,所以最好更改属性
的名称public class ExtendedAttribute
{
[JsonIgnore]
public Type? type { get; set; }
public object? Value { get; set; }
[JsonConstructor]
public ExtendedAttribute(string type)
{
this.type=Type.GetType(type);
}
}