2013-08-08 8 views
8

Już sprawdziłem how to remove $id during JSON serialization, ale podane odpowiedzi nie działają dla mnie i mam nadzieję, że ktoś może dowiedzieć się, co robię źle .

Oto mój kod:

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

Wyjście z tego wciąż wychodzi z $ id, ale tylko na obiektach Entity Framework, jest to zgodne z projektem? Jeśli tak, czy istnieje sposób, aby zapobiec tym $ id na Entity Framework obiektów?

Odpowiedz

15

Ustawienie niestandardowe ContractResolver zastępuje ustawienie PreserveReferencesHandling.

W swojej implementacji DefaultContractResolver/IContractResolver dodaj to;

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

ten zachowuje się podobnie do ustawienia PreserveReferencesHandling.None bez zwyczaju ContractResolver.

Powiązane problemy