Reputation: 14204
I am working on an API in ASP.NET. This API is written in C#. I am looking at a directory and I am trying to list each files details as a JSON string. The end result needs to work like this:
string json = "[{ name:'picture-1.png', mime-type:'image/png', size: 968 }, { name:'picture-2.png', mime-type:'image/png', size: 2578 }]";
In an attempt to do this, I currently have the following code:
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;
I do not know what the best way to do this. Everything I'm doing feel like a hack. It seems like there should be an easy way to do what I'm trying. Yet, its clearly something I do not know.
Upvotes: 1
Views: 2867
Reputation: 4274
Use JSON.net
First, create a class like this
public class FileInformation
{
public string name{get;set;}
[JsonProperty(PropertyName = "mime-type")]
public string mimeType{get;set;}
public int size {get;set;}
}
then
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);
that's it
Download JSON.net from the website http://james.newtonking.com/json or via nuget
Upvotes: 2
Reputation: 4219
You need to read the file, add that the content to JSON object.
Jsondata.file = System.IO.File.ReadAllText(Filepath);
Upvotes: -1