Często muszę rozszerzyć mój model domeny o dodatkowe informacje, zanim zwrócę go klientowi za pomocą WebAPI. Pomyślałem, że aby uniknąć tworzenia ViewModel, mogę zwrócić JObject z dodatkowymi właściwościami. Nie mogłem jednak znaleźć bezpośredniego sposobu na konwersję dowolnego typu obiektu do JObject za pomocą pojedynczego wywołania biblioteki Newtonsoft JSON. Wymyśliłem coś takiego:
- pierwszy SerializeObject
- następnie Parse
- i rozszerz JObject
Na przykład.:
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;
I w ten poprawny sposób?
JObject.FromObject(your_domain_object)jest tym, czego szukasz. Zobacz odpowiedź @ LB.