为了账号安全,请及时绑定邮箱和手机立即绑定

C# - 从字典创建对象的 JSON 数组

C# - 从字典创建对象的 JSON 数组

C#
慕妹3242003 2021-12-05 17:08:17
我确信有一个简单的解决方案,我只是还没有弄清楚。我需要返回一个对象数组JSON(我完全不熟悉)。结构应如下所示:{"files": [  {    "picture1.jpg": true  },  {    "picture2.jpg": true  }]}我以为我可以通过使用 a 来做到这一点,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}
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

以下解决方案将提供您正在寻找的内容。真正的关键是创建一个中间对象来保存您要查找的条目,而不是简单地将文件放在字典中。另一个复杂因素是您实际上是在寻找字典列表,其中每个字典都包含一个文件名/已删除的条目。


文件收集类:


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));

}


查看完整回答
反对 回复 2021-12-05
  • 1 回答
  • 0 关注
  • 329 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信