0

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

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

任何帮助将非常感激。

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

4

2 回答 2

2

这一切都取决于您希望如何管理反序列化。就个人而言,我喜欢使用基于 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 解析

于 2012-10-31T19:02:56.337 回答
2

以下链接指向 Newtonsoft.Json.Converters.DataTableConverter.cs 的源代码,它可以满足您的需求,它非常简单,似乎是最好的路线。

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

于 2012-10-31T20:45:54.870 回答