我正在使用C#MVC并拥有以下JSON:
MessageType: "Type1"
MessageData: {{Name: "Jonas"}, Phones: [{ Fixed: "12345", Mobile: "45678" }], Addresses: [{ Home: "ababa"} ... ], { HasId: "Yes }, ... }
MessageData
将包含不同的数据,具体取决于MessageType
。
我需要将它反序列化为以下C#结构:
public class AjaxMsg
{
public string MessageType { get; set; }
public object MesssageData { get; set; }
}
我在客户端的POST期间使用本机序列化,但我只获取MessageType
数据。
此外,代码:
var msgDataString = MessageData.ToString()
返回"System.Object"
如何相应地将MessageData
作为对象格式?
答案 0 :(得分:0)
您可以使用JSON.NET的ToObject
方法:
JObject Data = Message.MessageData;
Type type = Message.MessageType;
object obj = Data.ToObject(type); // if you dont know the type in compile time
MyType obj2 = Data.ToObject<MyType>(); // if you know the type in compile time
答案 1 :(得分:0)
创建一个反序列化的包装类:
[Serializable]
public class AjaxMsg
{
[DataMember]
public string MessageType { get; set; }
[DataMember]
public object MessageData { get; set; }
}
public class Data
{
public IList< AjaxMsg> list {get;set;}
}
var obj = JsonConvert<Data>(json);