将值"Opc.Ua.NodeId"转换为类型"系统.类型"时出错



我正在尝试使用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);
}
}

相关内容

  • 没有找到相关文章

最新更新