A menudo necesito ampliar mi modelo de dominio con información adicional antes de devolverlo al cliente con WebAPI. Para evitar la creación de ViewModel, pensé que podría devolver JObject con propiedades adicionales. Sin embargo, no pude encontrar una forma directa de convertir un objeto de cualquier tipo a JObject con una sola llamada a la biblioteca Newtonsoft JSON. Se me ocurrió algo como esto:
- primer SerializeObject
- luego Parse
- y extender JObject
P.ej.:
var cycles = cycleSource.AllCycles();
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var vm = new JArray();
foreach (var cycle in cycles)
{
var cycleJson = JObject.Parse(JsonConvert.SerializeObject(cycle, settings));
// extend cycleJson ......
vm.Add(cycleJson);
}
return vm;
Yo de esta manera correcta?
JObject.FromObject(your_domain_object)es lo que estas buscando. Vea la respuesta de @ LB.