私は比較的新しいC#で、JSON形式のWebサーバー上のフォルダの内容を返すWeb API Webサービスを作成しようとしています。ここでWeb APIフォルダファイル情報を表示するJSON Webサービス
は私のFileinformation.csクラスである:ここで
[DataContract]
public class FileInformation
{
public FileInformation(string name, string mimeType, long size, DateTime lastModified)
{
this.name = name;
this.mimeType = mimeType;
this.size = size;
this.lastModified = lastModified;
}
public string name { get; set; }
[JsonProperty(PropertyName = "mime-type")]
public string mimeType { get; set; }
public DateTime lastModified { get; set; }
public long size { get; set; }
}
は私のコントローラである:
public class ValuesController : ApiController
{
// GET api/values
public List<FileInformation> Get()
{
string ImageryFolder = @WebConfigurationManager.AppSettings["folderName"];
string fileExtension = WebConfigurationManager.AppSettings["fileExtension"];
DirectoryInfo d = new DirectoryInfo(ImageryFolder);
FileInfo[] Files = d.GetFiles("*."+ fileExtension);
var list = new List<FileInformation>();
foreach (FileInfo fileInfo in Files)
{
string name = ImageryFolder + "\\" + fileInfo.Name;
Debug.WriteLine(name);
string mimeType = MimeMapping.GetMimeMapping(fileInfo.Name);
long size = fileInfo.Length;
DateTime lastModified = fileInfo.LastWriteTime;
FileInformation newFile = new FileInformation(name, mimeType, size, lastModified);
list.Add(newFile);
}
//var jsonResult = JsonConvert.SerializeObject(list);
return list;
}
}
で8つのファイルがあるので、私は現在、このようなルックスを取得しています出力は、それが近くにあります返されるFileInformationノードの数と同じ数のフォルダです。
*あなたのプロパティはなぜ失われていますか?*データ契約シリアル化がオプトインです。プロパティを '[DataMember]'でマークするか、[opt-out model](http://stackoverflow.com/質問/ 19964866/datacontractシリアル化 - オプトインシリアライザ - 作成方法 - オプトアウト)。または、あなたの質問です*なぜ私のサービスはXMLを返すのですか? – dbc
@dbc D'oh!私はそれを知っていました...それぞれのプロパティに[DataMember]を追加するのが解決策でした。あなたがそれを追加すれば答えとしてマークすることができます。ありがとう! – Nate23VT