Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net DataContract名称属性不适用于Json序列化程序_Asp.net_Asp.net Web Api_Json.net_Datacontract - Fatal编程技术网

Asp.net DataContract名称属性不适用于Json序列化程序

Asp.net DataContract名称属性不适用于Json序列化程序,asp.net,asp.net-web-api,json.net,datacontract,Asp.net,Asp.net Web Api,Json.net,Datacontract,我正在构建一个只支持JSON的WepApi,我有一个返回列表的控制器。 我用Datacontract/Datamember属性修饰了列表,如下所示: [DataContract(Name = "Files", Namespace = "http://schemas.example.com")] public class FileDesc { [DataMember(Name = "MyFileName")] public string Name { g

我正在构建一个只支持JSON的WepApi,我有一个返回列表的控制器。 我用Datacontract/Datamember属性修饰了列表,如下所示:

[DataContract(Name = "Files", Namespace = "http://schemas.example.com")]
    public class FileDesc
    {
       [DataMember(Name = "MyFileName")]
       public string Name { get; set; }
       [DataMember(Name = "MyFilePath")]
       public string Path { get; set; }
       [DataMember(Name = "MyFileSize")]
       public long? Size { get; set; }
       public FileDesc(string n, string p, long? s)
       {
           Name = n;
           Path = p;
           Size = s;
       }
   }
// Response
List<FileDesc> FileList  = new List<FileDesc>();
foreach (MultipartFileData file in provider.FileData)
{
  FileList.Add(new FileDesc(file.Headers.ContentDisposition.FileName, file.LocalFileName , file.Headers.ContentDisposition.Size ));
}
return FileList;
public class Response
{
    [DataMember(Name = "Files")]
    List<FileDesc> FileList { get; set; }
}
{
    "Files": 
    [
        {
            "myFileName": "\"ArduinoUNO.png\"",
            "myFilePath": "c:\\images\\ArduinoUNO.png",
            "myFileSize": null
        }
    ]
}
在我的控制器中,我返回如下列表:

[DataContract(Name = "Files", Namespace = "http://schemas.example.com")]
    public class FileDesc
    {
       [DataMember(Name = "MyFileName")]
       public string Name { get; set; }
       [DataMember(Name = "MyFilePath")]
       public string Path { get; set; }
       [DataMember(Name = "MyFileSize")]
       public long? Size { get; set; }
       public FileDesc(string n, string p, long? s)
       {
           Name = n;
           Path = p;
           Size = s;
       }
   }
// Response
List<FileDesc> FileList  = new List<FileDesc>();
foreach (MultipartFileData file in provider.FileData)
{
  FileList.Add(new FileDesc(file.Headers.ContentDisposition.FileName, file.LocalFileName , file.Headers.ContentDisposition.Size ));
}
return FileList;
public class Response
{
    [DataMember(Name = "Files")]
    List<FileDesc> FileList { get; set; }
}
{
    "Files": 
    [
        {
            "myFileName": "\"ArduinoUNO.png\"",
            "myFilePath": "c:\\images\\ArduinoUNO.png",
            "myFileSize": null
        }
    ]
}
要强制仅输出JSON,我已删除Global.asax上的xml格式化程序:

//Only JSON
var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.XmlFormatter);

提前感谢

数组本身在JSON中没有名称。如果希望列表中有名称,则需要具有命名属性的外部对象来保存列表

大概是这样的:

[DataContract(Name = "Files", Namespace = "http://schemas.example.com")]
    public class FileDesc
    {
       [DataMember(Name = "MyFileName")]
       public string Name { get; set; }
       [DataMember(Name = "MyFilePath")]
       public string Path { get; set; }
       [DataMember(Name = "MyFileSize")]
       public long? Size { get; set; }
       public FileDesc(string n, string p, long? s)
       {
           Name = n;
           Path = p;
           Size = s;
       }
   }
// Response
List<FileDesc> FileList  = new List<FileDesc>();
foreach (MultipartFileData file in provider.FileData)
{
  FileList.Add(new FileDesc(file.Headers.ContentDisposition.FileName, file.LocalFileName , file.Headers.ContentDisposition.Size ));
}
return FileList;
public class Response
{
    [DataMember(Name = "Files")]
    List<FileDesc> FileList { get; set; }
}
{
    "Files": 
    [
        {
            "myFileName": "\"ArduinoUNO.png\"",
            "myFilePath": "c:\\images\\ArduinoUNO.png",
            "myFileSize": null
        }
    ]
}

谢谢你,这就是我要找的。我刚刚开始使用JSON。