9

我已经研究过如何在 JSON 序列化期间删除 $id ,但给出的答案似乎对我不起作用,我希望有人能找出我做错了什么。

这是我的代码:

return JsonConvert.SerializeObject(target, new JsonSerializerSettings {
    NullValueHandling = NullValueHandling.Include,
    PreserveReferencesHandling = PreserveReferencesHandling.None,
    ContractResolver = new CustomContractResolver(),
    Converters = CustomConverters
});

来自此的输出仍然带有 $id's,但是,仅在实体框架对象上,这是设计使然吗?如果是这样,有什么方法可以防止实体框架对象上的那些 $id ?

4

1 回答 1

20

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

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

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

PreserveReferencesHandling.None这与没有 custom的设置类似ContractResolver

于 2013-10-14T15:43:47.327 回答