2016-03-23 6 views
0

Ich habe seit einiger Zeit mehrere Serialisierer von .Net 4.x verwendet und denke, dass ich sie 3,5 Mal von .NET geerbt habe. Ich habe gerade gemerkt, dass die meisten dieser Serializer damals kein C# -Wörterbuch im Allgemeinen serialisieren und deserialisieren konnten.Welche JSON - Serializer können mit C# 's Dictionary umgehen? <TKey,T>

Im Code, den ich jetzt bin Refactoring, ich sehe Abhilfen wie ausströmenden eine Liste <T> anstelle eines Wörterbuch < string, T > (was ich eine Arbeit um betrachten und o vermeiden wollen und lieber die gebaut verwenden Funktionen eines Serialisierers).

Welchen Status hat Ihr bevorzugter JSON-Serializer?

Auch: Wissen Sie, ob Ihr Serializer JSON API-kompatibel ist? (JSONAPI.org)

+0

Mögliche Duplikate von [Wie konvertiere ich ein Wörterbuch in einen JSON-String in C#?] (Http://stackoverflow.com/questions/5597349/how-do-i-convert-a-dictionary-to-a- json-string-in-c) –

+0

Verwenden Sie 'ToList()' auf dem Wörterbuch, um in eine 'List >' –

+0

Dank Alex zu verwandeln. Das ist wahrscheinlich eine faire Arbeit, wenn der Serializer nicht so etwas aus der Box macht. Diese Frage war mehr über die Erfahrungen mit Serializern gedacht, die tatsächlich die Dictionary-Serialisierung unterstützen. Und: Ich habe diese Technik sehr oft benutzt, als ich XML serialisiert habe und es nicht so gut gefallen hat, weil KeyValuePair "Clutter" in der Ausgabedatei erzeugt hat. Nicht mit JSON, nehme ich an. Einen Versuch wert. Danke noch einmal. –

Antwort

0

http://www.newtonsoft.com/json ist derjenige, den ich am meisten benutzt habe. Einer der schneller und sehr flexibel. Es ist der Standard-Serializer von asp.net MVC/WebAPI verwendet

https://github.com/kevin-montrose/Jil wird von StackOverflow verwendet und ist sehr schnell.

Jsonapi ist ein höheres Problem. Es ändert sich nicht, wie json de/serialisiert wird. Es ist nur ein Muster, eine Konvention, ein Standard, ein Schema für die Form/das Format, um Ihre Daten zurückzugeben. Es hat nicht viel Einfluss darauf, welchen Serializer Sie wählen.

+0

Danke für den Hinweis auf Jil. Sieht interessant aus und könnte im aktuellen Projekt gut zu mir passen. –

+0

Jsonapi: Ja, du hast Recht. Es scheint weiter zu gehen über Konventionen über das Speichern/Verarbeiten von Referenzen/Beziehungen und dann einige. Ich muss sehen, wie ich meine WebService-Schicht mit dem Standard-JSON-API-Adapter für Ember arbeiten lassen kann. –

0

Nach vielen Jahren der Erfahrung verschiedenen Serializer und versuchen, sie zu bekommen, mit aller Art von Sammlungstypen gerecht zu werden, habe ich zu einem Schluss kommen:

Oft ist es besser, meine komplexen Objekte zu konvertieren, in einfache DTO (Datenübertragungsobjekte), die einfach öffentliche Eigenschaften (oder Felder) haben, mit Arrays für alle "Sammlungen". Und dann können ALLE Serialisierer zurechtkommen, einschließlich der Serialisierer, die ich noch nicht kenne, die aber nächstes Jahr portieren müssen ....

Mit anderen Worten, schreiben Sie mehr Code, aber zumindest ist es Code, den ich in meinem Schlaf schreiben kann! Automapper kann auch dabei helfen, die Menge an benutzerdefiniertem Code zu reduzieren, der zum Erstellen der DTOs benötigt wird.

+0

Danke für Ihren Kommentar, Ian. Es ist wahrscheinlich ein bisschen philosophisch, welchen Ansatz zu verwenden. Ein DTO-Layer für jede interne Klasse, die ich persistent machen möchte, hat seinen Charme. Mit C# -Klassen, die nach XML serialisiert wurden, war ich ein Fan dieses Ansatzes. Derzeit bin ich ein wenig mehr dafür, die C# -Klassen so zu verwenden, wie sie sind - sowohl auf der Clientseite als auch auf JavaScript. –