9

JSONシリアライゼーション中に $id を削除する方法についてはすでに見てきましたが、与えられた答えは私にとってはうまくいかないようで、誰かが私が間違っていることを理解してくれることを願っています.

これが私のコードです:

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

これからの出力はまだ$idで出てきますが、Entity Frameworkオブジェクトでのみ、これは設計によるものですか? もしそうなら、Entity Framework オブジェクトの $id を防ぐ方法はありますか?

4

1 に答える 1

20

The custom ContractResolver setting overrides the PreserveReferencesHandling setting.

In your implementation of DefaultContractResolver/IContractResolver, add this;

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

This behaves similarly to the PreserveReferencesHandling.None setting without a custom ContractResolver.

于 2013-10-14T15:43:47.327 に答える