[英]C# - Create JSON array of objects from Dictionary
我确定有一个简单的解决方案,我只是还没有弄清楚。
我需要以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
}
以下解决方案将提供您正在寻找的内容。 真正的关键是创建一个中间对象来保存您要查找的条目,而不是简单地将文件放在字典中。 另一个复杂因素是您实际上是在寻找字典列表,其中每个字典都包含一个文件名/已删除的条目。
文件收集类:
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));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.