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

我确信有一个简单的解决方案,我只是还没有弄清楚。


我需要返回一个对象数组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

}


慕妹3242003
浏览 330回答 1
1回答

一只甜甜圈

以下解决方案将提供您正在寻找的内容。真正的关键是创建一个中间对象来保存您要查找的条目,而不是简单地将文件放在字典中。另一个复杂因素是您实际上是在寻找字典列表,其中每个字典都包含一个文件名/已删除的条目。文件收集类:public class FileCollection{&nbsp; &nbsp; [JsonProperty("files")]&nbsp; &nbsp; public List<Dictionary<string, bool>> Files { get; set; }&nbsp; &nbsp; public FileCollection()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Files = new List<Dictionary<string, bool>>();&nbsp; &nbsp; }}您现有的逻辑,修改为使用新的集合类:public async Task<JsonResult> DeleteImages(List<string> ids){&nbsp; &nbsp; var files = new FileCollection();&nbsp; &nbsp; foreach (var id in ids)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var file = await _fileService.GetByIdAsync(id);&nbsp; &nbsp; &nbsp; &nbsp; if (await AzureStorage.DeleteFile(file))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; files.Files.Add(new Dictionary<string, bool> { { file.Name, true } });&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return Json(JsonConvert.SerializeObject(files));}
打开App,查看更多内容
随时随地看视频慕课网APP