我有一个应用程序,可以序列化对象并发送 JSON 字符串值,如下所示。
public class Rootobject
{
public int MessageState { get; set; }
public object Message { get; set; }
public object HeaderId { get; set; }
}
public class Message
{
public string FName { get; set; }
public string LName { get; set; }
public string Address { get; set; }
}
Rootobject ro = new Rootobject();
ro.HeaderId = "HID";
ro.MessageState = 0;
ro.Message = new Message() { FName = "john", LName = "Doe", Address = "123456" };
string x = JsonConvert.SerializeObject(ro);
此
x
值被发送到另一个应用程序,并按如下方式反序列化。
public class Rootobject1
{
public int MessageState { get; set; }
public object Message { get; set; }
public object HeaderId { get; set; }
}
public class Message1
{
public string FName { get; set; }
public string LName { get; set; }
public string Address { get; set; }
}
var y = JsonConvert.DeserializeObject<Rootobject1>(receivedMsg);
这里的嵌套对象没有被反序列化,只是一个
JObject
。
如何反序列化嵌套对象?请帮忙。
谢谢。
我不明白将
Message
中的 Rootobject1
属性定义为 object
类型的原因,因为您知道数据结构。
解决此问题的快速方法是使用
Message
类型定义 Message1
。
public class Rootobject1
{
public int MessageState { get; set; }
public Message1 Message { get; set; }
public object HeaderId { get; set; }
}
或者,您也可以将
JObject
转换为 Message1
类型。
var message = ((JObject)y.Message).ToObject<Message1>();