Код
ниже предназначен для извлечения данных из файлов BLSON JSON и отображения в пользовательском интерфейсе.
Код занимает слишком много времени при перемещении.
, если путь к BLOB-файлу равен
myblob//mydata//1.json
myblob//mydata//2.json
Я хочу проверить, как [{"name": "super"}]
, если я нашел name = "super" в любом из 1.json или 2.json, мне нужно вернуть этот набор данных.
var blobDirectory = container.GetDirectoryReference(directoryreference);
IEnumerable<IListBlobItem> items = blobDirectory.ListBlobs(useFlatBlobListing: false);
string blobFilePath = String.Empty;
foreach (var blob in items.OfType<CloudBlob>()
.OrderByDescending(b => b.Properties.LastModified))
{
string blobFileFullPath = Path.GetDirectoryName(blob.Name).Replace("\\", "/");
blobFilePath = Path.GetDirectoryName(blobFileFullPath).Replace("\\", "/");
if (blobFilePath != null)
{ break; }
}
var blobFileDirectory = container.GetDirectoryReference(blobFilePath);
IEnumerable<IListBlobItem> fileitems = blobFileDirectory.ListBlobs(useFlatBlobListing: false);
foreach (var fileitem in fileitems.OfType<CloudBlob>())
{
CloudBlockBlob cbb = container.GetBlockBlobReference(fileitem.Name);
var messageString = "";
using (MemoryStream stream = new MemoryStream())
{
cbb.DownloadToStream(stream);
string messageData = System.Text.Encoding.UTF8.GetString(stream.ToArray());
messageData = messageData.TrimEnd();
if (!messageData.EndsWith("]"))
{
messageData = messageData + "]";
}
mymodel.BlobDeviceId = Session["name"].ToString();
JArray messageDataArray = JArray.Parse(messageData);
List<string> deviceCollection = new List<string>();
deviceCollection = Session["deviceCollection"] as List<string>;
foreach (var deviceId in deviceCollection)
{
foreach (JObject obj in messageDataArray.Children<JObject>())
{
if (obj["name"].ToString() == "super"
{
messageString = JsonConvert.SerializeObject(obj);
jsonFormatted = JValue.Parse(messageString).ToString(Formatting.Indented);
mymodel.BlobDeviceId = deviceId;
goto outerloop;
}
}
}
}
}
outerloop: if (jsonFormatted == "")
{
jsonFormatted = "Currently data is not available";
}
}
catch (Exception ex)
{
}
return jsonFormatted;
}