Ich habe gerade den XmlWriter verwendet, um XML zu erstellen, das in einer HTTP-Antwort zurückgesendet werden soll. Wie würden Sie eine JSON-Zeichenfolge erstellen? Ich nehme an, Sie würden nur einen Stringbuilder verwenden, um den JSON-String zu erstellen, und sie formatieren Ihre Antwort als JSON?
238
Antworten:
Sie können die JavaScriptSerializer-Klasse verwenden . Lesen Sie diesen Artikel , um eine nützliche Erweiterungsmethode zu erstellen.
Code aus Artikel:
Verwendung:
quelle
Die Verwendung von Newtonsoft.Json macht es wirklich einfacher:
Dokumentation: Serialisieren und Deserialisieren von JSON
quelle
string json = JsonConvert.SerializeObject(new { "PropertyA" = obj.PropertyA });
."PropertyA"
seinPropertyA
?string json = JsonConvert.SerializeObject(new { PropertyA = obj.PropertyA });
ohne doppelte Anführungszeichen aufPropertyA.
Diese Bibliothek ist sehr gut für JSON von C #
http://james.newtonking.com/pages/json-net.aspx
quelle
Einfache Verwendung der Bibliotheken Newtonsoft.Json und Newtonsoft.Json.Linq .
quelle
Dieses Codefragment verwendet den DataContractJsonSerializer von System.Runtime.Serialization.Json in .NET 3.5.
quelle
Unter http://www.codeplex.com/json/ finden Sie das Projekt json-net.aspx. Warum das Rad neu erfinden?
quelle
Sie können auch meinen ServiceStack JsonSerializer ausprobieren , der schnellste .NET JSON-Serializer . Es unterstützt die Serialisierung von DataContracts, POCO-Typen, Schnittstellen, spät gebundenen Objekten, einschließlich anonymer Typen usw.
Grundlegendes Beispiel
Hinweis: Verwenden Sie Microsoft JavaScriptSerializer nur, wenn die Leistung für Sie nicht wichtig ist, da ich sie aus meinen Benchmarks herausnehmen musste, da sie bis zu 40x-100x langsamer ist als die anderen JSON-Serializer.
quelle
Wenn Sie ein komplexes Ergebnis benötigen (eingebettet), erstellen Sie Ihre eigene Struktur:
und dann können Sie JSON-String mit Aufruf erhalten
Das Ergebnis wird folgendermaßen aussehen:
Ich hoffe es hilft!
quelle
Wenn Sie die beiden integrierten JSON-Serializer ( JavaScriptSerializer und DataContractJsonSerializer ) nicht verwenden können oder möchten, können Sie die JsonExSerializer- Bibliothek ausprobieren - ich verwende sie in einer Reihe von Projekten und funktioniert recht gut.
quelle
Wenn Sie versuchen, einen Webdienst zu erstellen, um Daten über JSON auf einer Webseite bereitzustellen, sollten Sie das ASP.NET Ajax-Toolkit verwenden:
http://www.asp.net/learn/ajax/tutorial-05-cs.aspx
Es konvertiert automatisch Ihre Objekte, die über einen Webservice bereitgestellt werden, in json und erstellt die Proxy-Klasse, mit der Sie eine Verbindung herstellen können.
quelle
Die DataContractJsonSerializer wird mit dem gleichen einfach wie die XMLSerializer alles für Sie tun. Es ist trivial, dies in einer Web-App zu verwenden. Wenn Sie WCF verwenden, können Sie dessen Verwendung mit einem Attribut angeben. Die DataContractSerializer-Familie ist ebenfalls sehr schnell.
quelle
Ich habe festgestellt, dass Sie den Serializer überhaupt nicht benötigen. Wenn Sie das Objekt als Liste zurückgeben. Lassen Sie mich ein Beispiel verwenden.
In unserem asmx erhalten wir die Daten mit der Variablen, die wir weitergegeben haben
Dann greifen wir mit jquery auf den Dienst zu und geben diese Variable weiter.
Und wir bekommen unsere Antwort.
quelle
Verwendung verschlüsseln
Einfaches Objekt für JSON Array EncodeJsObjectArray ()
Ergebnis: [[29, "mike"], [5, "dummy"]]
Hübsche Verwendung
Pretty print JSON Array PrettyPrintJson () String-Erweiterungsmethode
Ergebnisse sind:
quelle