在C#中将文件列表转换为JSON数组

本文关键字:转换 JSON 数组 列表 文件 | 更新日期: 2023-09-27 18:26:25

我正在ASP.NET中开发一个API。这个API是用C#编写的。我正在查看一个目录,并试图将每个文件的详细信息作为JSON字符串列出。最终结果需要这样工作:

string json = "[{ name:'picture-1.png', mime-type:'image/png', size: 968 }, { name:'picture-2.png', mime-type:'image/png', size: 2578 }]";

为了做到这一点,我目前有以下代码:

string jsonArrayString = "[]";
string directory = Path.Combine(Server.MapPath("/"), "Files");
if (Directory.Exists(directory))
{
  string[] fileNames = Directory.GetFiles(directory, "picture*", SearchOption.TopDirectoryOnly);
  foreach (string filename in fileNames)
  {
    FileInfo fileInfo = new FileInfo(fileName);
    string actualFileName = fileInfo.Name;
    string mimeType = MimeMapping.GetMimeMapping(fileInfo.Name);
    long size = FileInfo.length;
    // Add to JSON array?
  }
}  

return jsonArrayString;

我不知道最好的办法是什么。我做的每件事都感觉像黑客。似乎应该有一种简单的方法来做我正在尝试的事情。然而,这显然是我不知道的。

在C#中将文件列表转换为JSON数组

使用JSON.net

首先,创建一个类似的类

public class FileInformation
{
    public string name{get;set;}
    [JsonProperty(PropertyName = "mime-type")]
    public string mimeType{get;set;}
    public int size {get;set;}
}

然后

var list = new List<FileInformation>();
foreach (string filename in fileNames)
{
  FileInfo fileInfo = new FileInfo(fileName);
  string actualFileName = fileInfo.Name;
  string mimeType = MimeMapping.GetMimeMapping(fileInfo.Name);
  long size = FileInfo.length;

  list.Add(new FileInformation(){//SetProperties});
}
var yourJSONString = JsonConvert.SerializeObject(list);

就是

从网站下载JSON.nethttp://james.newtonking.com/json或通过nuget

您需要读取文件,将内容添加到JSON对象中。

Jsondata.file = System.IO.File.ReadAllText(Filepath);