我试图下载一个.json
blob,我已经存储在Azure Storage
的容器中,使用Newtonsoft.Json
将其写入对象。
为此,我呼吁:
(CloudBlockBlob) blob.DownloadToStream(stream);
但是,我不想将流写入本地应用程序目录中的文件,而是想通过执行Json(result)
返回json object
这就是我所尝试的:
using (var stream = new MemoryStream())
{
blob.DownloadToStream(stream);
var serializer = new JsonSerializer();
using (var sr = new StreamReader(stream))
{
using (var jsonTextReader = new JsonTextReader(sr))
{
result = serializer.Deserialize(jsonTextReader);
}
}
}
最后,我的jsonTextReader
变量为空,对象null
我能做些什么来实现这一点?
谢谢你
4条答案
按热度按时间ca1c2owp1#
问题和接受的答案都是从将整个流复制到
MemoryStream
中开始的,MemoryStream
实际上是内存中的一个大字节数组。这一步是不必要的-直接将blob数据流到对象而不先缓冲字节会更节省内存:tpxzln5u2#
请在将blob阅读到流中后将流的位置重置为
0
。所以你的代码应该是:wyyhbhjk3#
如果你不喜欢流媒体,想要一个简短而简洁的方式:
kfgdxczn4#
多年来,
Azure.Storage.Blobs
库一直是一个不断变化的目标。以下是截至10月的最新数据。2023.