我敢肯定有一个简单的解决方案,我只是还没弄清楚。
我需要在JSON
中返回一个对象数组(这是我的新手)。结构应如下所示:
{"files": [
{
"picture1.jpg": true
},
{
"picture2.jpg": true
}
]}
我认为我可以使用Dictionary
来做到这一点,但这似乎也不符合我想要的方式。以下是我到目前为止的内容以及输出结果。任何指导将不胜感激!
这是我在C#
中所拥有的:
public async Task<JsonResult> DeleteImages(List<string> ids)
{
var files = new Dictionary<string, bool>();
foreach (var id in ids)
{
var file = await _fileService.GetByIdAsync(id);
if (await AzureStorage.DeleteFile(file))
{
files.Add(file.Name, true)
}
}
return Json(JsonConvert.SerializeObject(files));
}
问题是这将返回以下内容:
{
"picture1.jpg": true,
"picture2.jpg": true
}
答案 0 :(得分:1)
以下解决方案将提供您所需要的确切信息。真正的关键是创建一个中间对象来保存您要查找的条目,而不是简单地将文件放在Dictionary中。另一个麻烦之处在于,您实际上是在寻找字典列表,其中每个字典都包含一个文件名/删除的条目。
文件收集类:
public class FileCollection
{
[JsonProperty("files")]
public List<Dictionary<string, bool>> Files { get; set; }
public FileCollection()
{
Files = new List<Dictionary<string, bool>>();
}
}
现有逻辑,已修改为使用新的集合类:
public async Task<JsonResult> DeleteImages(List<string> ids)
{
var files = new FileCollection();
foreach (var id in ids)
{
var file = await _fileService.GetByIdAsync(id);
if (await AzureStorage.DeleteFile(file))
{
files.Files.Add(new Dictionary<string, bool> { { file.Name, true } });
}
}
return Json(JsonConvert.SerializeObject(files));
}