Kürzlich stand ich vor der Aufgabe, JSON an ein REST-API zu schicken. Nachdem ich mich für Newtonsoft.JSON entschieden hatte, blieb die Frage, wie man möglichst elegant eine JSON-Struktur erstellen kann.
Natürlich hätte man jetzt hingehen und eine Klasse zur Serialisierung verwenden können, aber die schiere Menge an Klassen, die in meinem Fall nötig gewesen wäre, hat mich abgeschreckt.
Die dynamische Lösung
Die Lösung ist, dynamische Objekte zu verwenden – ein Feature, welches ich viel zu lange ignoriert habe, wie ich feststellen durfte. Zur Compile-Zeit unterstützt ein dynamisches Objekt jedwede Operation oder Eigenschaft. Man kann also problemlos so etwas schreiben:
Man beachte, dass außer List<object> keine weitere Klasse verwendet wird. So erhält man ein Objekt, welches „magisch“ alle Eigenschaften enthält, die man benötigt. Man kann dieses Objekt sogar an andere Methoden als dynamischen Parameter übergeben:
Und natürlich lässt sich dieses Objekt dann auch nach JSON serialisieren – man muss das Objekt nur so anlegen, dass es das benötigte JSON-Format liefert.