【问题标题】:Json.Net adding $id to EF objects despite setting PreserveReferencesHandling to "None"尽管将 PreserveReferencesHandling 设置为“None”,Json.Net 仍将 $id 添加到 EF 对象
【发布时间】:2013-08-10 07:45:22
【问题描述】:

我已经看过how to remove $id during JSON serialization,但给出的答案似乎对我不起作用,我希望有人能弄清楚我做错了什么。

这是我的代码:

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

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

【问题讨论】:

    标签: c# entity-framework serialization json.net


    【解决方案1】:

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

    DefaultContractResolver/IContractResolver的实现中,添加这个;

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

    这与没有自定义 ContractResolverPreserveReferencesHandling.None 设置类似。

    【讨论】:

      猜你喜欢
      • 2019-07-15
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多