c# - 如何使用 Json.Net 跟踪和处理流
问题描述
我正在编写一个应用程序,它将进行 REST HTTP 调用并在响应正文中接收 JSON。响应主体可能很大并且内容变量,因此我想将其作为流处理并处理内容以确定我想要反序列化的部分。
我能够使用 StreamReader(传入 HttpResponseMessage.Content,作为流读取)和 JsonTextReader 执行我的解析和反序列化我想要的对象。但是,当 JsonTextReader 从流中提取数据时,我还想将原始 JSON 跟踪到文件,以便我们记录原始响应(用于诊断)。
例如,我的代码:
var serializer = new JsonSerializer()
using (var streamReader = new StreamReader(httpContentStream))
using (var textReader = new JsonTextReader(streamReader))
{
textReader.SupportMultipleContent = true;
while (textReader.Read())
{
// Code which looks at the tokens in the text reader and
// figures out what to throw away, what to deserialize and
// what the next type to deserialize will be (stored in someType)
Type someType = null;
// Deserialize an object that we're interested in.
// This advances the textReader to the next token
// after then end of this object (I.E. More than one token)
var someObject = serializer .Deserialize(textReader, someType);
}
}
有没有办法让 Json.Net 在从流中提取字符时跟踪它读取的字符串?我知道这可能会生成一个大文件!
提前感谢您的任何回复。
解决方案
推荐阅读
- reactjs - 类型错误:data.comments 未定义
- php - 从 Laravel 5.8 开始排序数组
- sql-server - MS SQL Server - 将列转换为行时未显示表中的所有数据
- flutter - 如何从条纹支付中获得一定的百分比
- django - 管理部分中模型 Token 的用途是什么?
- java - 在java中的大尺寸.DAT文件的最后一行之前插入行
- html - HTML5 顶部水平菜单和永久子菜单
- spring-boot - 使用 declarables 从 rabbitmq 取消绑定路由键
- c# - EFCore 数据播种缺少数据插入?
- r - 用随机数计算一个新变量