首页 > 解决方案 > 如何使用 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 在从流中提取字符时跟踪它读取的字符串?我知道这可能会生成一个大文件!

提前感谢您的任何回复。

标签: c#json.net

解决方案


推荐阅读