Json.Net 无法序列化为流,但可以正常序列化为字符串

2024-01-12

在内部,JsonConvert.SerializeObject(obj, Formatting.Indented)归结为

JsonSerializer jsonSerializer = JsonSerializer.Create(null);
StringWriter stringWriter = new StringWriter(new StringBuilder(256), (IFormatProvider) CultureInfo.InvariantCulture);
using (JsonTextWriter jsonTextWriter = new JsonTextWriter((TextWriter) stringWriter))
{
  jsonTextWriter.Formatting = formatting;
  jsonSerializer.Serialize((JsonWriter) jsonTextWriter, value);
}
return stringWriter.ToString();

这很好用。但是,如果我执行以下操作:

string json;

JsonSerializer jsonSerializer = JsonSerializer.Create();

using (var stream = new MemoryStream())
using (var streamWriter = new StreamWriter(stream, Encoding.UTF8))
using (var jsonWriter = new JsonTextWriter(streamWriter))
{
    serializer.Serialize(jsonWriter, cmd);

    stream.Position = 0;
    using (var reader = new StreamReader(stream))
    {
        json = reader.ReadToEnd();
    }
}

那么值json is ""。谁能指出我的错误吗?


问题是你没有冲水streamWriter写完后:

serializer.Serialize(jsonWriter, cmd);
streamWriter.Flush();
stream.Position = 0;

或者,为什么不直接使用StringWriter首先?

using (var writer = new StringWriter())
{
    using (var jsonWriter = new JsonTextWriter(writer))
    {
        serializer.Serialize(jsonWriter, cmd);
        Console.WriteLine(writer.ToString());
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Json.Net 无法序列化为流,但可以正常序列化为字符串 的相关文章

  • std::tr1::function 和 std::tr1::bind

    我在使用时遇到问题veryC 类中的复杂 C 函数 重写 C 函数是not一个选项 C函数 typedef void integrand unsigned ndim const double x void fdata unsigned fd
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 多维数组和指向指针的指针

    创建多维数组时char a 10 10 根据我的书 它说你必须使用类似于char a 10 将数组传递给函数 为什么必须这样指定长度 您不是只是将双指针传递给 with 并且该双指针不是已经指向分配的内存吗 那么为什么参数不能是char a
  • 函数指针上的未知类型 F TYPE

    include
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 如何删除实体框架6中的多对多关系

    如果将项目连接为多对多关系 则从数据库中删除项目时会出现问题 我的数据库看起来像 Project lt JobInProject gt Job ProjectID JobInProjectID JobID ProjectID JobID 主
  • 如何在Azure功能中添加razor视图文件?

    我正在创建一个应用程序 它是 azure 函数项目 我想在该项目中使用 Razor 视图 我应该在 azure 函数中使用任何模板引擎吗 得益于一些方面的进步剃刀之光项目 https github com toddams RazorLigh
  • 为什么这个单独的定义会导致错误?

    挑战 我有这段代码无法编译 你能找出问题所在吗 有一次让我很头疼 header namespace values extern std string address extern int port cpp file std string v
  • 除空字符串外的任何内容的正则表达式

    是否可以使用正则表达式来检测任何不是 空字符串 的内容 如下所示 string s1 string s2 string s3 string s4 etc 我知道我可以使用修剪等 但我想使用正则表达式 s 将匹配任何包含至少一个非空格字符的字
  • 将授权标头添加到 Web 参考

    我正在尝试向客户端的网络服务发出请求 我不知道客户端的底层平台 我使用 添加 Web 引用 在 Visual Studio 2010 中使用了客户端的 WSDL 并生成了我的代理类 称为 ContactService 我现在需要将如下所示的
  • 执行存储过程时 ExecuteNonQuery() 返回 -1

    我正在尝试在 Visual Studio 中执行存储过程 下面给出 CREATE PROCEDURE dbo addStudent stuName varchar 50 address varchar 100 tel varchar 15
  • #define 内存地址声明

    这个 define 语句有什么作用 它用于定义内存地址 但我不明白 uint32 t 部分 define GPxDAT uint32 t 0x6FC0 通常用于访问映射到地址空间的硬件寄存器 或者一些特定的内存地址 硬件寄存器应定义为vol
  • 将 System.Array 从 .Net 编组到 vb6

    我有一个 Net 组件 它有一个 COM 可见类 该类具有返回 System Array 的方法 它实际上返回一个字符串数组 但返回类型声明为 System Array 不要问我 为什么 我知道我可以将返回类型声明为 string 这样就可
  • Control.FindForm 和 ContainerControl.ParentForm 有什么区别

    我想知道两者之间是否有任何功能 或其他 差异Control FindForm and ContainerControl ParentForm 我一直在使用 ParentForm创建我自己的用户控件时 但有什么原因吗 FindForm会是一个
  • 如何创建和使用类箭头运算符? [复制]

    这个问题在这里已经有答案了 因此 在到处研究之后 我似乎找不到如何创建类箭头运算符 即 class Someclass operator gt 我只需要知道如何使用它并正确使用它 它的输入是什么 它返回什么 我如何正确地声明 原型化它 运算
  • 返回 ICollection 而不是 List 的真正优势是什么? [复制]

    这个问题在这里已经有答案了 我读过几篇博客文章 提到对于公共 API 我们应该始终返回 ICollection 或 IEnumerable 而不是 List 返回 ICollection 而不是 List 的真正优势是什么 Thanks 复
  • C# 3.0 中自动属性和公共字段的区别

    我无法理解为什么 C 3 0 中存在自动实现的属性语言功能 当你说的时候有什么区别 public string FirstName than public string FirstName get set 因为它们在生成的 IL 代码 和机
  • 是否可以编写一个在另一个 Windows 应用程序中选择文本时收到通知的 Windows 应用程序?

    我很好奇是否可以编写一个程序来监视我的文本选择 一种可能的用途是编写一个与编辑器 IDE 无关的代码格式化程序 应用程序 服务 P 启动并以某种方式挂接到窗口中 以便在任何窗口中选择文本时收到通知 启动其他一些应用程序 A 用户选择 A 中
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • 如何使用 Ioc Unity 注入依赖属性

    我有以下课程 public interface IServiceA string MethodA1 public interface IServiceB string MethodB1 public class ServiceA IServ

随机推荐

  • 如何以分布式方式在本地启动drillbit?

    我下载了 Apache Drill v1 8 编辑了conf drill override conf进行以下更改 drill exec cluster id drillbits1 zk connect 10 178 23 140 2181
  • Ravendb - 自动生成自己的密钥

    我当前有一个对象 它有一个名为 Id 的公共属性 当我存储对象时 我希望 Id 成为数据的一部分 而不是像当前那样成为文档 Id 创建文档存储时 我仅设置连接字符串 using var session documentStore OpenS
  • 无法在 Intellij 中运行 Scala 文件

    我在 Intellij IDEA 14 4 社区版中建立了一个加特林项目 我安装了 Scala 插件 并且项目配置似乎是正确的 因为我没有看到内联错误并且编译工作正常 不过 我在一些教程中指出 您也可以通过右键单击当前文件并选择运行或调试来
  • 停止 ruby​​ http 请求修改标头名称

    我正在 ruby 中执行 http 请求 http Net HTTP new uri host uri port req Net HTTP Post new uri path req body payload req customehead
  • 如果包含一个空格,Pandas 将名称列拆分为名字和姓氏

    假设我有一个 pandas DataFrame 其中包含如下名称 name df pd DataFrame name Jack Fine Kim Q Danger Jane Smith Juan de la Cruz name 0 Jack
  • 索引所有列

    知道索引列会带来更好的性能 那么是否值得对数据库的所有表中的所有列进行索引 这种方法的优点 缺点是什么 如果值得的话 有没有办法在SQL Server中自动创建索引 我的应用程序动态添加表和列 取决于用户配置 我希望它们自动索引 由于上述原
  • PHPUnit - 通过命令行测试运行程序运行特定的测试套件[重复]

    这个问题在这里已经有答案了 是否可以通过命令行测试运行程序从配置文件指定要运行哪个测试套件 例如 如果我有以下 xml 配置
  • 刷新元素组

    我有一个 JSF 页面 它本质上只是数据行和列 每行的数据都来自类实例的属性 每行上都有一个链接 单击该链接时会调用一个支持 bean 方法来刷新该行上的数据 行由代表其下方的行组的标题分隔 我也想将标题设为链接 以便它将刷新其下方的所有行
  • 将数组转换为对象

    我正在尝试编写一个函数 它接受一个数组数组 并返回一个对象 其中数组中的每对元素作为键值对 我搜索了堆栈溢出并提出了以下代码 但是 我下面的代码仅返回第一个数组 make Ford 我的代码不返回其余的数组 关于为什么我的函数不返回数组数组
  • 链接到类的 PyCharm 文档字符串

    IntelliJ IDEA 允许链接到 Java 文档注释中的其他方法 这允许我将光标移动到符号上并使用键盘快捷键跳转到定义 以及在按住 ctrl 的同时将鼠标悬停在可单击的符号下方显示下划线 例如 This is a link to a
  • 在尝试导入插件之前使用 fullcalendar lib

    我在 Angular 9 项目中安装了 FullCalendar 5 然后我在浏览器控制台中收到此错误 并且页面中出现任何内容 vdom js 3 Uncaught Error Please import the top level ful
  • 防止页面上每个 Dojo xhr 请求中的缓存

    我可以使用以下命令拦截 Dojo 1 6 1 xhr 请求IO 管道主题如此处所述 Dojo 拦截 XHR 调用 https stackoverflow com questions 4781018 dojo intercepting xhr
  • 如果已删除,则从 NuGet 获取 DLL

    我在 NuGet 上阅读了相当多的内容 但似乎找不到我想要的东西 本质上 我希望它能像 Apache Ivy 一样工作 您只需签入您的配置文件 没有任何二进制文件 并告诉 NuGet 获取所有 DLL 从而使您免于对大量 DLL 进行版本控
  • 如何将 @tailwind CSS 规则添加到 CSS 检查器

    顺风 CSS https tailwindcss com docs what is tailwind adds a tailwind CSS at被标记为未知的规则 我怎样才能避免这个错误 例如 styles css tailwind pr
  • 从 JavaScript 使用 XML WCF REST Web 服务

    我有一个公开 REST WCF 服务的 WPF 应用程序 通过WebServiceHost 合同看起来像这样 简化 ServiceContract public interface IItemServiceContract WebGet U
  • 使用 Grails Spring Security CAS 插件重定向循环

    我正在处理一个涉及 CAS 服务器的项目 该项目使用单点登录 SSO 与其他基于 Spring 的项目一起使用 但我收到了涉及 Grails spring security cas 插件的重定向循环 版本 spring security C
  • 不工作

    我的 Web config 包含以下内容
  • 将 double 转换为 QString

    我正在用 Qt 编写一个程序 我想转换一个double into a QString in C 使用 QString 的 number 方法 文档是here https doc qt io qt 5 qstring html number
  • Spark 读取为 jdbc 将所有行返回为列名

    我正在 Scala 2 12 中使用 Spark 3 x SQL 查询 Spark 的数据库表 我遵循了互联网上给出的示例 我正在使用的数据库 Spark SQL的数据库并使用Centos 7 我正在查询的表 示例 具有以下列 create
  • Json.Net 无法序列化为流,但可以正常序列化为字符串

    在内部 JsonConvert SerializeObject obj Formatting Indented 归结为 JsonSerializer jsonSerializer JsonSerializer Create null Str