c# - C# - 从 Dictionary 创建 JSON 对象数组
问题描述
我确信有一个简单的解决方案,我只是还没有弄清楚。
我需要返回一个对象数组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));
}
推荐阅读
- python - 当 arg 已经包含 " " 和 ' ' 引号时,如何将字符串 arg 提交给 subprocess.run(arg, shell=True)?
- excel - 单击时如何制作用“组”字填充单元格以用于下一个空行的按钮宏
- php - else 条件有效,即使为真
- python - nn.Linear 如何在 shape(batch_size, seq_length, hidden_size) 中工作?
- html - 在 Firestore 中为新的 Firebase 身份验证帐户创建用户数据
- kubernetes - 通过 k8s 代理访问 Grafana API
- cron - crontab 不执行脚本,但可以手动执行
- azure-pipelines - 根据存储库名称使用不同的池/无法访问作业条件中的“Build.Repository.Name”变量
- typescript - 为什么打字稿编译器不警告用变量覆盖getter?
- python-3.x - ModuleNotFoundError:没有名为“celery.task.sets”的模块