Newtonsoft.Json 在序列化数组的中间添加省略号 (...)

2024-02-07

这是一个非常奇怪的行为Newtonsoft.Json的序列化功能。我几乎尝试了所有方法(例如,我没有继续使用 .NET Reflector 一步步完成Newtonsoft.Json.dll汇编的算法)。

Symptoms

情况如下:

我有一个小的 POCO,它包含 4 个字符串属性:

public class MyPoco {
    public string op { get; set; }
    public string left { get; set; }
    public string right { get; set; }
    public string result { get; set; }
}

I create an array of 618 MyPoco instances: enter image description here

The resulting json is always broken at the middle by an ellipsis: enter image description here

结果字符串的确切结构是这样的:

  • 字符串的第一部分是成功序列化的前156MyPoco实例
  • 字符串的第二部分实际上是 3 个点(这也破坏了 Json 语法 - 这实际上是一件好事),后面是后半部分MyPoco基于 0 的索引为 466 的实例
  • 字符串的第三部分是最后152的成功序列化MyPoco实例

基本上,总结一下:

  • Newtonsoft.Json已成功序列化数组的前 156 个项目(索引 0 到 155)
  • 它还成功序列化了最后 152 个项目(索引 467 到 617)
  • 它还成功地将左方括号和右方括号(代表数组)写入结果字符串的开头和结尾
  • 在此字符串的中间,它添加了省略号,将字符串切成两半,位于前导一堆 15,000 个“健康”字符之后和尾随一堆 15,000 个“健康”字符之前

Problem

我不知道该怎么办。我可以继续使用JavaScriptSerializer但我不想失去对Newtonsoft.Json.

这是主要问题。

感觉它应该因全面异常而崩溃,但它却默默地失败了,这可能会给生产应用程序带来严重的复杂性。

我到处寻找“最大缓冲区大小”之类的设置,但找不到比已经臭名昭著的“最大深度”设置更多的东西,但这里的情况并非如此,因为我有一个 3 层树(最深层有原始字符串) )。

有没有人经历过这种奇怪的行为Newtonsoft.Json?

更多信息

我使用了 8.0.2 和 7.0.1 Nuget 包版本(我跳过了 8.0.1)。 两个版本都表现出相同的症状。

我的目标是 .NET 4.6,我们正在讨论一个空的控制台应用程序(我以尽可能干净的方式复制了症状)。

EDIT #1

下面是在 Visual Studio 调试器中看到的省略号的快照:


好消息!看来终究是没有什么问题了。

如果你和我做同样的事情,你正在检查json变量,然后复制其内容并粘贴到其他地方进行验证。

问题是:Visual Studio 在开头添加省略号,然后在内容末尾添加。

如果将其写入文件,它就是完整且有效的 JSON!

var lines = new MyPoco[6000];

for (int i = 0; i < lines.Length; i++)
{
    lines[i] = new MyPoco
    {
        op = "Concatenate" + i,
        left = "Integer",
        right = "String",
        result = "String",
    };
}

var json = JsonConvert.SerializeObject(lines, Formatting.Indented);
File.WriteAllText("JsonNet.json", json);

var json2 = new JavaScriptSerializer().Serialize(lines);
File.WriteAllText("JavaScriptSerializer.json", json2);

希望能帮助到你!

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

Newtonsoft.Json 在序列化数组的中间添加省略号 (...) 的相关文章

  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • .Net应用程序设置路径

    默认情况下 Windows 应用程序设置保存在该目录中 USERPROFILE Local Settings Application Data
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • 在.rdlc报告的底部设置一个文本框

    我在 rdlc 报告中使用 tablix 有一个文本框 其中包含文本 签名 我想将此文本框放置在报告最后一页的底部 就在页脚之前 我已经用谷歌搜索了这个解决方案 但没有找到满意的结果 我的环境是VS2010 framework 4 0 有什
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif

随机推荐

  • IMPORTXML 到具有自动更新功能的 Google Apps 脚本中 [重复]

    这个问题在这里已经有答案了 我正在尝试让 Google 表格应用程序脚本适用于我正在使用的 IMPORTXML A1 importxml http www nfl com liveupdate scorestrip ss xml q A2
  • 获取矩阵元素的邻居

    我有一个矩阵 对于每个元素 我想获取其周围元素的索引 所有这些结果必须按以下方式存储到矩阵中 矩阵的每一行对应于一个矩阵元素 并且该矩阵的每一列包含 s 个邻居索引 例如 对于 4x4 矩阵 我们将得到一个 16x8 结果数组 某些矩阵元素
  • Ms Access vba 打开另一个数据库中表的数据表视图

    该语句将打开当前数据库中指定表的数据表视图 DoCmd OpenTable sTablename acViewNormal 有没有办法让另一个数据库中的表达到相同的结果 我有一个表单 可以在其中选择 Access 数据库 然后下拉菜单中会填
  • Mongodb 是否可以聚合对象?

    我正在尝试汇总本文档中的数据包总数 id ObjectId 51a6cd102769c63e65061bda capture 1369885967 packets 0 595 1 596 2 595 3 595 我能得到的最接近的是 db
  • Jythonc 失踪

    我刚刚安装了 Jython 2 5 1 我想将我的 Python 文件转换为 Java 类文件 网站上指示使用 jythonc 命令行工具 但我找不到它 有谁知道我在哪里可以找到它 基本上我想要完成的是让我的 Python 代码在浏览器中运
  • ValueError:无法处理多标签指示器和二进制的混合

    我将 Keras 与 scikit learn 包装器一起使用 特别是 我想使用 GridSearchCV 进行超参数优化 这是一个多类问题 即目标变量只能在一组 n 个类上选择一个标签 例如 目标变量可以是 Class1 Class2 C
  • PyMC - 方差-协方差矩阵估计

    我读了下面的论文 http www3 stat sinica edu tw statistica oldpdf A10n416 pdf http www3 stat sinica edu tw statistica oldpdf A10n4
  • PHPUnit 总是输出“没有执行测试!”在 MacOS 大苏尔

    当尝试跑步时anyPHPUnit 测试 我总是得到No tests executed 我的 MacOS 机器上的消息 在这台特定机器上进行重现的一个简单方法是安装一个新的 Laravel 实例并运行默认测试 composer create
  • jQuery;对于 new Image(),Chrome 图像宽度和高度 = 0

    在 DOM 加载后 我无法让 Chrome 识别图像宽度或高度 图像通过 phpThumb 脚本动态加载 调整图像大小 如果我去掉动态 url 并将其替换为图像的直接 url 我不会遇到任何问题 并且 Chrome 中一切正常 但使用动态
  • SQL 中关键字“GROUP”附近的语法不正确

    我在对语句进行分组时遇到错误 这是我的代码 DECLARE avg volume INT SELECT avg volume ISNULL AVG Total Volume 0 FROM SELECT station id DATEPART
  • 使用 ALTER 删除 MySQL 中存在的列

    如果 MySQL 表中存在某列 如何使用 ALTER 删除该列 我知道我可以使用ALTER TABLE my table DROP COLUMN my column 但是如果my column不存在 是否有替代语法来有条件地删除列 我使用的
  • Android 数据绑定:多次调用自定义绑定适配器时生成的代码中缺少返回语句

    我正在使用 android 数据绑定库和 MVVM 架构 在 xml 布局中 我定义了一个名为 viewModel 类型为 myViewModel 的变量 该布局有几个 TextInputEditText 我使用了以下自定义绑定适配器 ma
  • 检查 C++ 中 int 溢出

    我正在运行一个 C 程序 它在 for 循环中添加数字 int y 0 for int i 0 i
  • Mac Python“安装步骤失败:运行 postflight 脚本”

    我是 Python 开发新手 在尝试安装 Aptana Studio 时 我似乎搞乱了我的 Python 安装 所以我按照这里的卸载 MacPython 说明进行操作http homepages cwi nl jack macpython
  • 对于已知情况是否应该避免尝试捕获

    我有一个我知道会发生但非常罕见的案例 例如 代码每运行一万次 这种情况可能会发生一次 我可以通过一个简单的方法来检查这种情况if但是这个if会运行很多次没有用 另一方面 我可以将代码放在 try catch 块中 当发生特殊情况时 我会执行
  • 使用 str_extract_all 在 R 中运行正则表达式 正则表达式尚未实现

    我正在尝试使用正则表达式来解析使用正则表达式的文件 在 R 中使用正则表达式的大多数解决方案都使用 stringr 包 我还没有找到另一种方法 或者另一个可以使用的包 如果您有其他方法来解决此问题 那也是可以接受的 我想要完成的是获取几个由
  • HTML5 Canvas 调整大小(缩小)图像质量高吗?

    我使用 html5 canvas 元素在浏览器中调整图像大小 事实证明 质量非常低 我找到了这个 缩放 时禁用插值 https stackoverflow com questions 7615009 disable interpolatio
  • 使用 python 从电子表格中提取多个表

    我想提取一系列 Excel 电子表格的多个表 其中某些工作表可能包含多个表 以单独存储这些表 例如csv 文件 该表可能是这样的 如果我使用 pandas read excel 读取它 import pandas as pd pd read
  • 在启用共享配置的 IIS 7+ 上安装 Web Deploy

    我们有一个在 Windows 2008R2 上运行 IIS 7 5 的网络场环境 我们使用共享配置和网络存储复制 我们尝试在其中一台服务器上安装 Web Deploy v3 5 但收到一条错误消息 指出共享配置不支持 Web Deploy
  • Newtonsoft.Json 在序列化数组的中间添加省略号 (...)

    这是一个非常奇怪的行为Newtonsoft Json的序列化功能 我几乎尝试了所有方法 例如 我没有继续使用 NET Reflector 一步步完成Newtonsoft Json dll汇编的算法 Symptoms 情况如下 我有一个小的