我今天偶然发现了一些事情。以下是我的示例课程。
public class Employee
{
public string Name{get;set;}
Public Department Dept {get;set;}
public IList<Roles> Roles;
}
public Department{
public string Name{get;set;}
}
public Role {
public string Name{get;set;}
}
sampleApiController : ApiContrller{
public IEnumerable<string> Get(){
return new List<string>{"Pavan", "Josyula"};
}
public Employee GetEmp(int id){
Employee e = new Employee();
e.Dept = "IT";
e.Name="Pav";
IList<Roles> r = new IListRoles();
r.Add(new Role{Name="Integrator"});
e.Roles = r;
return e;
}
}
现在,当我从我的broswer调用此GetEmp方法时,无论我在AcceptHeaders中的内容类型是什么,它总是以JSON格式给出响应。但是当我调用我的Get方法时,它返回XML格式的字符串集合,它也基于请求标头中的accept动词。有些正文可以告诉我自定义类型的默认JSON行为的原因。
答案 0 :(得分:3)
这是因为XmlSerializer无法序列化IList<T>
。请阅读以下答案以获取更多详细信息: