Json形式に変換してStreamオブジェクト経由でアップロードする必要があるオブジェクトがあります。これは、AWS S3のアップロードコードです:JsonをAWS S3バケットにNewtonsoft.Jsonで直接シリアル化
AWSS3Client.PutObjectAsync(new PutObjectRequest()
{
InputStream = stream,
BucketName = name,
Key = keyName
}).Wait();
ここストリーム AWSS3Clientによって読み取られるストリームタイプです。 アップロードしているデータは、Json形式でなければならない複雑なオブジェクトです。
JsonConvert.SerializeObjectを使用してオブジェクトを文字列に変換することも、JsonSerializerを使用してファイルにシリアル化することもできますが、データ量が非常に重要です。一時的な文字列やファイルを避け、オブジェクトを読み込み可能なストリームにすぐに変換することをお勧めします。私の理想的なコードは次のようになります。
Newtonsoft.Jsonを使用してこれを達成する方法はありますか?
このアプローチでは、別のスレッドでBlockingStreamが必要になります。私の質問は簡単には見えません。 –
あなたの最良の選択は一時ファイルを使用していると思います。 1つの大きな利点があります。何らかの理由でJsonのシリアル化が途中で失敗した場合、AWSストアに半分焼き付けられていないオブジェクトは残されません。カスタムプロデューサ/コンシューマストリームの上で適切な例外処理を実装することで、パフォーマンスを向上させることなく10行のコードを150にすることができます。一時ファイルはローカルであれば遅くなることはありません。 – archnae
このコメントをあなたの答えに加えるべきです。基本的に私の魔法のシリアライゼーションストリームは存在しませんし、最善の方法は、一時ファイルを使用するか、メモリストリームにシリアライズすることです。 –