【发布时间】:2011-11-02 19:37:46
【问题描述】:
我有一些工作代码:
String objstr = "{\"m_children\":[{\"m_children\":null,\"m_name\":\"child0\"},{\"m_children\":null,\"m_name\":\"child1\"}],\"m_name\":\"Root\"}";
byte[] byteArr = Encoding.ASCII.GetBytes(objstr);
MemoryStream ms = new MemoryStream(byteArr);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Node));
Node obj = (Node)ser.ReadObject(ms);
让我烦恼的是,我必须在解码之前知道字符串中包含的对象的类型。我想通过 TCP 管道发送以 JSON 编码的对象,而不必发送有关对象类型的额外信息。
【问题讨论】:
-
json 只能序列化普通对象。你不能使用其他允许打字的序列化形式吗?
-
Dynamic?@einacio,他们特别要求“不必发送有关对象类型的额外信息”,例如 xsd。
-
所以@Almo 想要在静态类型语言上进行魔术打字。可以将类型作为 json 中的额外数据发送,但我不知道 c++ 是否可以使用字符串而不是类名 php-style 来创建对象
-
我想知道为什么序列化程序在其输出中不包含任何类型信息。我找到了一个 .net 序列化程序可以使用的地方,但它似乎是非标准的,并且不适用于 .net 之外的序列化程序。而且我不在 C++ 中。