【发布时间】:2020-11-23 04:58:47
【问题描述】:
我正在尝试进行序列化和反序列化, 但不知何故,它在 xamarin 应用程序上的工作与在控制台应用程序上的工作方式相同, 使用此 json 字符串和自定义包装器的快速示例
public class JsonWrapper
{
public string ObjType { get; set; }
public object Obj { get; set; }
}
这是一个需要明确的json直接字符串
var json =
"{\"ObjType\":\"System.Exception\",\"Obj\":{\"ClassName\":\"System.Exception\",\"Message\":\"Printer Is Not Connected\",\"Data\":null,\"InnerException\":null,\"HelpURL\":null,\"StackTraceString\":null,\"RemoteStackTraceString\":null,\"RemoteStackIndex\":0,\"ExceptionMethod\":null,\"HResult\":-2146233088,\"Source\":null,\"WatsonBuckets\":null}}\r\n";
var obj= JsonConvert.DeserializeObject<JsonWrapper>(json);
var type = Type.GetType(obj.ObjType);
var obj2 = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(obj.Obj), type);
var message = (obj2 as Exception).Message;
它会得到缺少信息的消息变量,我的意思是不会得到打印机未连接的消息, 相同的代码在控制台应用程序中运行良好,所以 idk, 有人可以帮忙吗?
【问题讨论】:
-
您是否声称 JsonConvert 在不同平台上的工作方式不同?如果是这样,那是一个错误,但是很可能它不是一个错误,并且您正在做一些不同的事情。现在由你来证明它完全一样
-
它完全一样,我正在尝试使用应该与@TheGeneral 相同的直接 json 字符串