Web Api json响应$id变量

本文关键字:id 变量 响应 Api json Web | 更新日期: 2023-09-27 17:58:49

在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响应中删除?

Web Api json响应$id变量

WebApiConfig 中尝试此代码

var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;

编辑:如果出于某种原因,您正在使用自定义ContractResolver,那么根据这篇文章

自定义ContractResolver设置将覆盖PreserveReferences Handling设置。

在DefaultContractResolver/IContractResolver的实现中,添加以下内容;

public override JsonContract ResolveContract(Type type) {
    var contract = base.ResolveContract(type);
    contract.IsReference = false;
    return contract;
}

这与没有自定义ContractResolver的PreserveReferences Handling.None设置类似。