【发布时间】:2015-03-16 16:32:18
【问题描述】:
我正在使用 JSON.NET 通过网络接收消息。消息格式有些动态,因为消息将由许多不同的类表示,每个类都继承自父消息。例如:
{
MessageName: "MessageType1",
Data1: 124,
Data2: "Something"
}
{
MessageName: "MessageType2",
OtherData: "Some data",
MoreData: "Even more",
ANumber: 25
}
我遇到的问题是,在 JSON.NET 中,我不知道如何找出类的名称(MessageType1/MessageType2/etc),以便在不反序列化的情况下将其反序列化为类的实例两次。我考虑过几个选项;我目前使用的是使用一个容器类,其中包含消息名称和序列化为字符串的实际 json 消息,但这似乎很浪费。
我考虑过的另一种方法是反序列化为字符串/字符串字典,然后自己执行类的填充,考虑到 JSON.NET 可以为我做到这一点,这似乎很混乱且不必要……只要我先知道类。
我真的希望有一种简单的方法让 JSON.NET 通过检查 MessageName 属性找出类名,然后在检查该属性后继续填充类。
感谢您的帮助!
【问题讨论】:
-
可以使用dynamic关键字反序列化为动态对象,然后遍历属性得到
MessageName。
标签: c# .net json serialization json.net