Web Api json响应$ id变量

Tom*_*Tom 5 c# asp.net-mvc json asp.net-web-api angularjs

在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;
}
Run Code Online (Sandbox Code Playgroud)

这个方法返回七个对象,这是正确的.

现在,当我收到json格式的数据时,我看到我还收到了$ id成员以及id,Nome,Cognome ......

什么是$ id变量?如何从json响应中删除它?

Nil*_*are 9

试试这个代码吧 WebApiConfig

var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
Run Code Online (Sandbox Code Playgroud)

编辑:如果由于某种原因你正在使用自定义ContractResolver然后根据这篇文章

自定义ContractResolver设置会覆盖PreserveReferencesHandling设置.

在您的DefaultContractResolver/IContractResolver的实现中,添加此项;

public override JsonContract ResolveContract(Type type) {
    var contract = base.ResolveContract(type);
    contract.IsReference = false;
    return contract;
}
Run Code Online (Sandbox Code Playgroud)

此行为与没有自定义ContractResolver的PreserveReferencesHandling.None设置类似.

  • 他还问"什么是$ id变量"......你有答案吗? (3认同)