在asp web api中我有这个控制器响应ajax请求并发送回json数据:
public IEnumerable<PersonaleDTO> GetPersonale()
{
var n = (from p in db.Personale
select new PersonaleDTO { Id = p.Id, Nome = p.Nome, Cognome = p.Cognome Cellulare = p.Cellulare, Email = p.Email, Attivo = (bool)p.Attivo }).ToList();
return n;
}
此方法返回七个对象并且它是正确的。
现在,当我收到json格式的数据时,我看到我还收到了$ id和id,Nome,Cognome ...
$ id变量是什么?如何从json响应中删除它?
答案 0 :(得分:9)
在WebApiConfig
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
修改:如果由于某种原因您正在使用自定义ContractResolver,那么按此post
自定义ContractResolver设置会覆盖PreserveReferencesHandling设置。
在DefaultContractResolver / IContractResolver的实现中,添加此内容;
public override JsonContract ResolveContract(Type type) {
var contract = base.ResolveContract(type);
contract.IsReference = false;
return contract;
}
此行为与没有自定义ContractResolver的PreserveReferencesHandling.None设置类似。