.NET Core项目与.NET Framework中为System.Data.DataTable生成的JSON的更改 [英] Change in JSON generated for a System.Data.DataTable in a .NET Core project vs .NET Framework

查看:81
本文介绍了.NET Core项目与.NET Framework中为System.Data.DataTable生成的JSON的更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的程序在.NET Core项目与.NET Framework应用程序中运行时会生成不同的JSON.

The program below generates different JSON when run in a .NET Core project vs a .NET Framework app.

代码

class Program
{
    internal static readonly MediaTypeFormatter DefaultFormatter = new JsonMediaTypeFormatter
    {
        UseDataContractJsonSerializer = false,
        SerializerSettings =
        {
            NullValueHandling = NullValueHandling.Ignore,
            DateTimeZoneHandling = DateTimeZoneHandling.Utc,
            DateFormatHandling = DateFormatHandling.IsoDateFormat
        }
    };

    private static DataTable BuildTestDataTable()
    {
        var testDataTable = new DataTable();
        testDataTable.Columns.Add("Label", typeof(string));
        testDataTable.Columns.Add("Metric", typeof(decimal));
        testDataTable.Rows.Add("A", 10);
        testDataTable.Rows.Add("B", 20);
        return testDataTable;
    }

    static void Main(string[] args)
    {
        DataTable table = BuildTestDataTable();

        ObjectContent oc = new ObjectContent(table.GetType(), table, DefaultFormatter);

        Console.WriteLine(oc.ReadAsStringAsync().Result);

        Console.ReadKey();
    }
}

.Net框架:

[{"Label":"A","Metric":10.0},{"Label":"B","Metric":20.0}]

.Net核心:

{
    "DataTable.RemotingVersion": {
        "_Major": 2,
        "_Minor": 0,
        "_Build": -1,
        "_Revision": -1
    },
    "XmlSchema": "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<xs:schema xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n  <xs:element name=\"Table1\">\r\n    <xs:complexType>\r\n      <xs:sequence>\r\n        <xs:element name=\"Label\" type=\"xs:string\" msdata:targetNamespace=\"\" minOccurs=\"0\" />\r\n        <xs:element name=\"Metric\" type=\"xs:decimal\" msdata:targetNamespace=\"\" minOccurs=\"0\" />\r\n      </xs:sequence>\r\n    </xs:complexType>\r\n  </xs:element>\r\n  <xs:element name=\"tmpDataSet\" msdata:IsDataSet=\"true\" msdata:MainDataTable=\"Table1\" msdata:UseCurrentLocale=\"true\">\r\n    <xs:complexType>\r\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\r\n    </xs:complexType>\r\n  </xs:element>\r\n</xs:schema>",
    "XmlDiffGram": "<diffgr:diffgram xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" xmlns:diffgr=\"urn:schemas-microsoft-com:xml-diffgram-v1\">\r\n  <tmpDataSet>\r\n    <Table1 diffgr:id=\"Table11\" msdata:rowOrder=\"0\" diffgr:hasChanges=\"inserted\">\r\n      <Label>A</Label>\r\n      <Metric>10</Metric>\r\n    </Table1>\r\n    <Table1 diffgr:id=\"Table12\" msdata:rowOrder=\"1\" diffgr:hasChanges=\"inserted\">\r\n      <Label>B</Label>\r\n      <Metric>20</Metric>\r\n    </Table1>\r\n  </tmpDataSet>\r\n</diffgr:diffgram>"
}

有人可以阐明我的原因吗?这是否是故意的差异?

Can someone illuminate me on the cause of this, and whether it is an intentional difference ?

推荐答案

根据> ://github.com/JamesNK/Newtonsoft.Json/issues/1383

它在netstandard1.5中,但是netstandard1.3是Json.NET支持的最高版本.最终添加了netstandard2.0构建后,我将添加对它的支持.

It is in netstandard1.5 but netstandard1.3 is the highest that Json.NET supports. When a netstandard2.0 build is eventually added then I'll add support for it.

这篇关于.NET Core项目与.NET Framework中为System.Data.DataTable生成的JSON的更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆