如何对JSON进行数据表的序列化和反序列化

我试图找到一种方法来序列化和反序列化数据集与一个数据表到JSON和从JSON回到数据集/数据表使用JSON.NET,但我找到的所有示例和示例只是从数据集或数据表序列化到JSON,从来没有两种方式。 我们有一个处理XML序列化数据集和数据表的系统,我们仍然需要以该格式保留这些数据集和数据表,但允许某些UI视图将数据呈现为JSON。

数据可以具有空值,这是有效的。

任何帮助将非常感激。

示例(单向序列化):
http://www.west-wind.com/weblog/posts/2008/Sep/03/DataTable-JSON-Serialization-in-JSONNET-and-JavaScriptSerializer

以下链接是Newtonsoft.Json.Converters.DataTableConverter.cs的源代码,它可以满足您的需要,它非常直接,看起来是最好的路线。

https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Converters/DataTableConverter.cs

这一切都取决于您希望如何管理反序列化。 就个人而言,我喜欢采用基于LINQ的方法,该方法以下列方式工作:

// Get the children of the JSON result (This example is from my own code, // in which case I have one big "result" node which contains a bunch of // children that I am interested in deserializing. var jsonChildren = JObject.Parse(response)["results"].Children(); // Now use a LINQ statement to deserialize. For example... var jsonResults = jsonChildren.Select(x => { new MyObject { Prop1 = x["Var1"], Prop2 = x["Var2"], } }); 

这一切归结为你使用JSON子IEnumerable就像你将一组键值对一样,使用方括号语法访问必要的后代。 LINQ只是让事情变得更清洁。

更新

不确定这是否适用于您的情况,但这里有一篇关于使用动态对象的主题的有趣文章http://www.west-wind.com/weblog/posts/2012/Aug/30/Using-JSONNET-for-动态JSON-解析