Twitter ストリーミング API を段階的に利用して、ルート オブジェクトを 1 つずつ処理し、非同期でコールバックを介してそれぞれを返すようにしています。{ 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!]));
}
}
}
}
特定のアプリケーションを長時間見つめた結果、明らかな何かを見落としていることを願っています。