我正在尝试以增量方式使用 Twitter 流 API 来逐个处理根对象,并通过异步回调返回每个对象。我已经看到实现计算 { vs } 的数量并等待数字在 0 处平衡,然后处理该数据块,尽管对我来说这真的感觉不安全。
我的计划是使用 json.net JsonTextReader 并使用 TokenType 和 Depth 来完成这项工作。这很好,因为它是在每个对象的末尾拆分读取的一种非常可靠的方法,我只是不知道如何将该数据放入 Deserialize 方法中。Deserialize 方法确实接受 JsonTextReader 作为参数,但是从那时起处理(毕竟它是一个仅向前的流)所以我被卡住了。还有一个 DeserializeObjectAsync 方法可用,但只接受一个字符串。
var jsonSerializer = new JsonSerializer();
using (StreamReader reader = new StreamReader(_response.GetResponseStream()))
{
using (var jsonReader = new JsonTextReader(reader))
{
while (jsonReader.Read())
{
if (jsonReader.Depth == 0 && jsonReader.TokenType == JsonToken.EndObject)
{
//newTweetCallback(jsonSerializer.Deserialize<Tweet>([Some magic here. Help!]));
}
}
}
}
我希望我只是因为盯着特定应用程序太久而遗漏了一些明显的东西。