Json.Net 在.Net Core 2.0 中序列化DataSet 问题

Posted uptothesky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Json.Net 在.Net Core 2.0 中序列化DataSet 问题相关的知识,希望对你有一定的参考价值。

使用Asp.Net Core中自带的版本10.0.1

生成一个简单的DataSet

DataSet ds2 = new DataSet();
            DataTable table = new DataTable();
            table.Columns.Add(new DataColumn("id") { Caption = "编号" });
            table.Columns.Add(new DataColumn("name") { Caption = "姓名" });
            DataRow row1 = table.NewRow();
            row1["id"] = 1;
            row1["name"] = "hello";
            table.Rows.Add(row1);
            ds2.Tables.Add(table);
            string sddtr = JsonConvert.SerializeObject(ds2);
            var dd = JsonConvert.DeserializeObject<DataSet>(sddtr);

查看序列化后的内容

技术分享图片

可以看到数据是已xml的方式展现的,这里面包括DataSet的基本信息,比如Caption等等。

这个问题可以查看:https://stackoverflow.com/questions/47392643/jsonconvert-serializeobject-with-dataset-returning-unexpected-result

 

把Json.Net升级到最新的版本

技术分享图片

 

再次查看序列化后的内容

技术分享图片

 

可以发现丢失了元数据的信息。如果原来的DataSet中Table的列是DateTime类型的,反序列化后列会变成String类型。

以上是关于Json.Net 在.Net Core 2.0 中序列化DataSet 问题的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core - Json.NET反序列化映射

.Net Core 3.0原生Json解析器

如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?

.NET Core手记 - Json.NET的使用

使用新的 Net Core 3.0 Json 时忽略属性

无法访问 Newtonsoft.JSON .Net Core 2.* 方法