Ich muss mein Domain-Modell häufig um zusätzliche Informationen erweitern, bevor ich es mit WebAPI an den Client zurückgeben kann. Um die Erstellung von ViewModel zu vermeiden, dachte ich, ich könnte JObject mit zusätzlichen Eigenschaften zurückgeben. Ich konnte jedoch keinen direkten Weg finden, um Objekte jeglicher Art mit einem einzigen Aufruf der Newtonsoft JSON-Bibliothek in JObject zu konvertieren. Ich habe mir so etwas ausgedacht:
- erstes SerializeObject
- dann analysieren
- und erweitern Sie JObject
Z.B.:
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;
Ich das richtig?
JObject.FromObject(your_domain_object)
ist was Sie suchen. Siehe die Antwort von @ LB.Antworten:
JObject implementiert IDictionary, sodass Sie es auf diese Weise verwenden können. Zum Beispiel
So wird der letzte json sein
Sie können auch ein
dynamic
Schlüsselwort verwendenquelle
Wenn Sie ein Objekt haben und JObject werden möchten, können Sie Folgendes verwenden:
so was :
quelle
System.InvalidCastException
Das wird funktionieren:
quelle