我正在编写一个将进行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在将字符从流中拉出时跟踪其读取的字符串?我知道这可能会生成一个大文件!
在此先感谢您的回复。