1

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.

2
  • Don't hand create your own json strings. Use a proper library. JSON.net is highly recommended. Just create an array of objects of a class with the properties you need and then serialize it. Commented Oct 14, 2014 at 15:32
  • 2
    Have a class with properties for name, mime-type and size, Create a List of that class objects, add Items to that list in your loop and return serialized List. Commented Oct 14, 2014 at 15:32

2 Answers 2

2

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

Sign up to request clarification or add additional context in comments.

Comments

-1

You need to read the file, add that the content to JSON object.

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.