Ya he visto cómo eliminar $ id durante la serialización de JSON, pero las respuestas dadas no parecen funcionar para mí y espero que alguien pueda descubrir lo que estoy haciendo mal.
Aquí está mi código:
return JsonConvert.SerializeObject(target, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include, PreserveReferencesHandling = PreserveReferencesHandling.None, ContractResolver = new CustomContractResolver(), Converters = CustomConverters });
El resultado de esto sigue apareciendo con $ id, PERO, solo en los objetos de Entity Framework, ¿esto es por diseño? Si es así, ¿hay alguna manera de evitar esos $ id en los objetos de Entity Framework?
La configuración personalizada de ContractResolver
anula la configuración PreserveReferencesHandling
.
En su implementación de DefaultContractResolver
/ IContractResolver
, agregue esto;
public override JsonContract ResolveContract(Type type) { var contract = base.ResolveContract(type); contract.IsReference = false; return contract; }
Esto se comporta de forma similar a la configuración PreserveReferencesHandling.None
sin un ContractResolver
personalizado.