我的项目通过 UDP 获取大量 JSON 字符串,每个字符串描述一些对象列表。 我无法编写一个函数来获取某个列表,并对这个列表进行反序列化。 问题是,如果不知道组成列表的对象的类名,我就无法进行反序列化。 我尝试给出每个部门 ID 字段。但是在这里,我也无法对特定字段进行反序列化,因为部门名称未知。
有人有解决办法吗?
最佳答案
是的,JSON 问题。 我会走封装的路。 首先,我将创建包装器:
public class JSONObjectWrapper
{
public string ObjectType;
public string ObjectInJSON;
[DoNotSerialize] // sorry do not remember the attribute to exclude it from serialization
public object ObjectData;
}
在序列化期间,您将显式地将 ObjectData
序列化为 ObjectInJSON
。然后发送序列化的JSONOBjectWrapper。
在传入端,您始终知道它是 JSONObjectWrapper。反序列化它 - 通过此您可以获得包含对象和对象类型的 JSON。找到此对象类型,使用某个工厂创建它,然后将其从 OBjectInJSON
反序列化为 ObjectData
。
仅当您可以在发送端进行绕行时,上述过程才有效。否则,你就完蛋了:-)
关于c# - JSON反序列化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744416/