.NET Core 项目与 .NET Framework 中为 System.Data.DataTable 生成的 JSON 的变化

2024-01-22

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

Code

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>"
}

有人可以解释一下造成这种情况的原因吗?这是否是故意的差异?


As per https://github.com/JamesNK/Newtonsoft.Json/issues/1383 https://github.com/JamesNK/Newtonsoft.Json/issues/1383

它是netstandard1.5,但netstandard1.3是Json.NET支持的最高版本。当最终添加 netstandard2.0 版本时,我将添加对它的支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET Core 项目与 .NET Framework 中为 System.Data.DataTable 生成的 JSON 的变化 的相关文章

随机推荐

  • Spring AOP 切入点,方法名以 get 开头

    我正在尝试为 Spring AOP 实现切入点 所有的方法都像getXXXX应该被记录 我尝试了以下方法 但要么抛出异常 要么不触发 1st try Pointcut within net services get private void
  • 允许 Django 代理中间件中的逐跳标头

    我需要在 Django 中实现 HTTP 代理 我的 Google safari 引导我找到了一个名为django webproxy http code google com p django webproxy 虽然不再维护 但非常简单 大
  • react-native cli:启动时出错

    我按照说明安装了react native 但是 npm start 我出现以下错误 ERROR Metro Bundler can t listen on port 8081 Loading dependency graph npm ERR
  • 从控制台应用程序退出的正确方法[重复]

    这个问题在这里已经有答案了 我读过一些书here https stackoverflow com questions 12180512 exit from a console application in c sharp and here
  • React hooks 状态不使用最新版本

    我有下面的代码 我想在其中创建标签列表 在此示例中 我正在获取标签列表setAllTags 然后是一些可用的标签setAvailableTags 那么我遇到的问题是当setAvailableTags 运行它将删除在中获取的标签setAllT
  • 将 SQL 查询映射到 Nhibernate 中的业务对象

    我想将 SQL 查询映射到Business object using Nhibernate 员工表中有很多字段 但我只得到三个字段 并且只想映射那些字段 这是我的sql查询
  • 移动并修复手机 iOS 上录制的视频的 moovatom

    问题是如何找到并移动 iOS 设备上录制的 mov 文件的 moov 原子 以便可以通过 http 进行流式传输 有一种方法可以做到这一点 但这需要将其导出到文件 理论上这会让您复制整个文件 然后您就可以流式传输它 还有其他方法可以做到这一
  • Flask Admin 不显示所有字段

    我有这样的模型 class User db Model tablename users table args mysql engine InnoDB mysql charset utf8 id db Column db Integer pr
  • Android键盘滑动动画

    我对 Android 中的动画几乎没有 阅读 没有 经验 但想在键盘出现时实现动画 实际上 整个 Activity 看起来都在向上滑动 就像键盘位于 Activity 下方并将其向上推一样 而不是仅向上移动到所选的位置EditText 有谁
  • 猫鼬聚合框架中按日期排序

    我正在使用 mongoose 开发一个 nodejs mongodb 项目 现在我遇到了一个我不知道答案的问题 我正在使用聚合框架来获取分组结果 分组是在不包括时间数据字段的日期完成的 例如 2013 02 06 代码如下所示 MyMode
  • 在 CTE 内设置变量

    这是我第一次使用 SQLServer 2012 我的代码不起作用 CREATE PROCEDURE ReadCodeBuffer gint bigint pres tinyint level bigint quantity smallint
  • Python 需要 GIL。但 Jython 和 IronPython 没有。为什么?

    为什么您可以运行 Jython 和 IronPython 而无需 GIL 但 Python CPython 需要 GIL 解释器的某些部分不是线程安全的 尽管主要是因为通过大量使用锁使它们全部线程安全会极大地减慢单线程速度 source h
  • 使用 Leak Canary 防止误报

    我们观察到 Leak Canary 有很多误报 即 Leak Canary 检测到存在泄漏 但随后返回消息 LeakCanary NO LEAK FOUND 我认为这是因为GC没有及时声明对象 我们可以采取什么措施来减少这些误报 带过滤器查
  • C#,检测Windows上选定的文本?

    我会制作一个类似谷歌工具栏翻译功能的工具 但它是针对桌面的 我想做的是 在任何应用程序 word pdf liveMessenger等 中突出显示文本 并通过谷歌翻译API进行翻译 作为工具提示返回 我搜索了有关监视文本的msdn 我只发现
  • Imagemagick“mogrify -strip”-更改图像?

    In my 最后一个问题 https stackoverflow com questions 24683912 imagemagick depth convert询问转换和位深度 所以 这样做 convert in png out eps
  • 各种 .NET Framework 版本的操作系统兼容性

    每个 Net 框架的最低操作系统要求是什么 例如 对于哪个版本不可能运行每个操作系统 视窗95 视窗98 视窗98SE 视窗ME Windows NT 3 x 视窗NT 4 视窗2000 我相信所有 Net 框架都与 XP Vista Wi
  • 如何使用 Eclipse RCP 的打印选项打印 jasper 报告?

    我的问题 我在 Eclipse RCP 应用程序中有一个 ViewerComposite 它显示集成到其中的 Jasper Report jrxml 此 ViewerComposite 中显示的报告可以导出为 PDF RTF XML jrx
  • Krakenex API 多对查询

    我正在尝试使用 Krakenex python 库一次查询多个货币对的订单簿 当我对单一货币执行此操作时 这是有效的 如下所示 con krakenex API con load key kraken key con query publi
  • 创建一个处理 DatabaseFactory 的 DbContext 以更轻松地使用 DapperExtensions

    这几天我尝试使用一些基本的 CRUD 函数创建一个抽象的基础存储库简洁的扩展 https github com tmsmith Dapper Extensions 但作为示例给出的代码使用 SqlConnection 来连接到 SQL Se
  • .NET Core 项目与 .NET Framework 中为 System.Data.DataTable 生成的 JSON 的变化

    下面的程序在 NET Core 项目与 NET Framework 应用程序中运行时生成不同的 JSON Code class Program internal static readonly MediaTypeFormatter Defa