【问题标题】:Deserialize Azure Blob stream to Json Object将 Azure Blob 流反序列化为 Json 对象
【发布时间】:2017-11-21 02:26:51
【问题描述】:

我正在尝试使用 azure blob 触发器将 blob 流反序列化为 JSON 对象。每当我将视频上传到 blob 存储时,都会触发此触发器。但是,它抛出了这个错误:

Newtonsoft.Json:解析值时遇到意外字符:。小路 ''。

这是我用来反序列化的代码:

public static void Run(Stream myBlob, string name, TraceWriter log)
{
    myBlob.Position = 0; //resetting stream's position to 0
    var serializer = new JsonSerializer();
    using(var sr = new StreamReader(myBlob))
    {
        using(var jsonTextReader = new JsonTextReader(sr))
        {
            BlobData blobData = serializer.Deserialize<BlobData>(jsonTextReader);
        }
    }

    public class BlobData
    {
        public string path { get; set; }
    }
}

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您可以编辑您的问题并包含 blob 的实际内容吗?
  • 我之前提到过,blob 将包含一个视频,上传后会触发一个触发器。截至目前,我正在使用一些示例视频。
  • 当 blob 是视频时,如何将其反序列化为 JSON 对象?

标签: c# azure serialization azure-blob-storage


【解决方案1】:

我之前提到过,blob 将包含一个视频,上传后触发器将触发。截至目前,我正在使用一些示例视频

正如 Gaurav Mantri 所说,您无法将视频反序列化为 JSON 对象。根据我的理解,如果您想在上传视频 blob 后检索 blob Uri,并且您可以将视频 blob url 存储到其他数据存储中。此时,您可以为您的myBlob 参数绑定CloudBlockBlob 类型,您可以按如下方式检索blob url:

run.csx

#r "Microsoft.WindowsAzure.Storage"

using Microsoft.WindowsAzure.Storage.Blob;

public static void Run(CloudBlockBlob myBlob, string name, TraceWriter log)
{   
    //blob has public read access permission
    var blobData = new BlobData() { path = myBlob.Uri.ToString() };

    //blob is private, generate a SAS token for this blob with the limited permission(s)
    var blobSasToken=myBlob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
            {
                 SharedAccessExpiryTime =DateTimeOffset.UtcNow.AddDays(2),
                 Permissions = SharedAccessBlobPermissions.Read
            }));
    var blobData = new BlobData() 
          { 
            path = $"{myBlob.Uri.ToString()}{blobSasToken}"
          };
    //TODO:
}

此外,您可以关注Create and use a SAS with Blob storageAzure Functions Blob storage bindingsGet started with Azure Blob storage using .NET 以获取更详细的代码示例。

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多