我正在尝试下载一个.json
我存储在容器中的 blobAzure Storage
using Newtonsoft.Json
将其写入对象。
我通过调用来做到这一点:
(CloudBlockBlob) blob.DownloadToStream(stream);
但是,我不想将流写入本地应用程序目录中的文件,而是返回 jsonobject
doing Json(result)
这是我尝试过的:
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
我可以做什么来实现这个目标?
谢谢
问题和接受的答案都首先将整个流复制到MemoryStream
这实际上是内存中的一个大字节数组。此步骤是不必要的 - 将 blob 数据直接流式传输到对象而不先缓冲字节会更节省内存:
using (var stream = await blob.OpenReadAsync())
using (var sr = new StreamReader(stream))
using (var jr = new JsonTextReader(sr))
{
result = JsonSerializer.CreateDefault().Deserialize<T>(jr);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)