在asp web api中,我有此 Controller 来响应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响应中删除呢?

最佳答案

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设置类似。

关于c# - Web Api json响应$ id变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23151790/

10-12 13:42