在没有类型的先验知识的情况下在C#中解码JSON对象

Decode JSON Object in C# without prior knowledge of type

本问题已经有最佳答案,请猛点这里访问。

我有一些工作代码:

1
2
3
4
5
6
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编码的对象,而不必发送有关该对象的类型的额外信息。


使用.NET 4.0,您可以使用动态对象。 为什么不从另一个问题尝试这个解决方案:将JSON反序列化为C#动态对象?


附加信息:

http://www.codeproject.com/KB/IP/fastJSON.aspx

当此库对JSON进行编码时,它会提供足够的信息以进行完全自动的重新分析。

这虽然不适合我的目的,因为它包含一堆C#特定的信息,我们在这里使用跨语言。