Spesso ho bisogno di estendere il mio modello di dominio con informazioni aggiuntive prima di restituirlo al client con WebAPI. Per evitare la creazione di ViewModel ho pensato di poter restituire JObject con proprietà aggiuntive. Non sono riuscito tuttavia a trovare un modo diretto per convertire oggetti di qualsiasi tipo in JObject con una singola chiamata alla libreria JSON di Newtonsoft. Ho pensato a qualcosa del genere:
- primo SerializeObject
- poi Parse
- ed estendi JObject
Per esempio.:
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;
Io in questo modo corretto?
JObject.FromObject(your_domain_object)
è quello che stai cercando. Vedi la risposta di @ LB.