gpt4 book ai didi

c# - CloudBlockBlob.DownloadTextAsync 返回无效文本

转载 作者:行者123 更新时间:2023-11-30 21:45:44 24 4
gpt4 key购买 nike

我使用 azure blob 存储来存储 JSON 文件,并在我的代码中使用 C# API 下载它。

当我下载文本文件的内容并尝试使用 JsonConvert 对其进行反序列化时,出现错误(Visual Studio JSON 可视化工具还显示文本错误)。但是,如果我复制文本并粘贴到 JSONLint.com 中,它看起来很好。另外,如果我从 Azure 存储手动下载文件并在代码中读取文件,它会很好地反序列化。知道为什么我在使用 C# API 下载时收到无效数据吗?

var storageAccount = CloudStorageAccount.Parse(connectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
var blob = container.GetBlockBlobReference(folderAndFileName);
var text = await blob.DownloadTextAsync();
var obj = JsonConvert.DeserializeObject(text);
// Exception: "Unexpected character encountered while parsing value: . Path '', line 0, position 0."

注意:我通过 Powershell 上传文件:

$blobProperties = @{"ContentType" = "application/json"};
Set-AzureStorageBlobContent -Container $containerName -File $LocalFilePath -Blob $RemoteBlobName -BlobType "Block" -Properties $blobProperties

最佳答案

经过进一步调查,我发现下载的文件开头多了一个Unicode格式字符。我添加了以下代码来仅检查开头的特殊字符并将其删除...

var startIndex = 0;
while (char.GetUnicodeCategory(text, startIndex) == UnicodeCategory.Format)
{
startIndex++;
}
text = text.Substring(startIndex, text.Length - startIndex);

关于c# - CloudBlockBlob.DownloadTextAsync 返回无效文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39861943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com