Was ist der Vorteil der Verwendung von JSON.NET gegenüber System.Web.Script.Serialization.JavaScriptSerializer?
Weilin8
3
Es ermöglicht Ihnen, als Klasseneigenschaft zu verwenden, statt nur Zeichenfolgen zu serialisieren, zum einen ... es gibt viel mehr ..
Balexandre
7
Verwenden Sie JavaScriptSerializer nicht, es ist ungefähr 40x langsamer als die meisten anderen JSON-Serialisierer, die ich bewertet habe.
Mythos
1
Der neueste JSON.NET-Build weist einige Probleme mit .NET Framework 3.5 auf. Mit install .NET Framework 3.5 SP1 wiederherstellbar. Wenn Sie jedoch nicht zu .NET Framework 3.5 SP1 wechseln können, verwenden Sie JSON.NET
Rudy
1
Ich habe JSON.NET ein bisschen ausprobiert und sie haben ein Problem, wenn es um Polymorphismus geht, wie ich es sehe. Damit JSON.NET ein geerbtes Objekt deserialisieren kann, muss für JSON.NET eine Eigenschaft mit dem Namen "$ type" vorhanden sein, die den Typnamen enthält. Ich denke jedoch, dass der vollständige Typname erforderlich ist, und das ist nicht gut Sachen, wenn du ein JAVA / Android-Ding am anderen Ende hast.
Ted
19
Sie sollten auch meinen ServiceStack JsonSerializer ausprobieren - er ist derzeit der schnellste .NET JSON-Serializer, der auf den Benchmarks der führenden JSON-Serializer basiert und die Serialisierung von POCO-Typen, Datenverträgen, Listen / Wörterbüchern, Schnittstellen, Vererbungen und spät gebundenen Objekten einschließlich anonymer Objekte unterstützt Typen usw.
Grundlegendes Beispiel
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = customer.ToJson();
var fromJson = json.FromJson<Customer>();
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.
Das ist guter Code. Wie könnte ich eine der Klassen, um die Ergebnisse zurückzubekommen? Zum Beispiel ObjectName, der in ein Textfeld mit den Ergebnissen 'Testname' ausgegeben werden soll? Ich habe versucht 'test = GoogleTranslator.GoogleJSON.NameTypePair.ObjectName' messagebox.show (test)
Ebikeneser
7
Wenn Sie hier suchen, sehen Sie mehrere verschiedene Bibliotheken für JSON auf C #.
Probieren Sie das Vici-Projekt Vici Parser aus. Es enthält einen JSON-Parser / Tokeniser. Es funktioniert großartig, wir verwenden es zusammen mit dem MVC-Framework.
Antworten:
JSON.Net
quelle
Sie sollten auch meinen ServiceStack JsonSerializer ausprobieren - er ist derzeit der schnellste .NET JSON-Serializer, der auf den Benchmarks der führenden JSON-Serializer basiert und die Serialisierung von POCO-Typen, Datenverträgen, Listen / Wörterbüchern, Schnittstellen, Vererbungen und spät gebundenen Objekten einschließlich anonymer Objekte unterstützt Typen usw.
Grundlegendes Beispiel
var customer = new Customer { Name="Joe Bloggs", Age=31 }; var json = customer.ToJson(); var fromJson = json.FromJson<Customer>();
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
Das .net-Framework unterstützt JSON über JavaScriptSerializer. Hier ist ein gutes Beispiel, um Ihnen den Einstieg zu erleichtern.
using System.Collections.Generic; using System.Web.Script.Serialization; namespace GoogleTranslator.GoogleJSON { public class FooTest { public void Test() { const string json = @"{ ""DisplayFieldName"" : ""ObjectName"", ""FieldAliases"" : { ""ObjectName"" : ""ObjectName"", ""ObjectType"" : ""ObjectType"" }, ""PositionType"" : ""Point"", ""Reference"" : { ""Id"" : 1111 }, ""Objects"" : [ { ""Attributes"" : { ""ObjectName"" : ""test name"", ""ObjectType"" : ""test type"" }, ""Position"" : { ""X"" : 5, ""Y"" : 7 } } ] }"; var ser = new JavaScriptSerializer(); ser.Deserialize<Foo>(json); } } public class Foo { public Foo() { Objects = new List<SubObject>(); } public string DisplayFieldName { get; set; } public NameTypePair FieldAliases { get; set; } public PositionType PositionType { get; set; } public Ref Reference { get; set; } public List<SubObject> Objects { get; set; } } public class NameTypePair { public string ObjectName { get; set; } public string ObjectType { get; set; } } public enum PositionType { None, Point } public class Ref { public int Id { get; set; } } public class SubObject { public NameTypePair Attributes { get; set; } public Position Position { get; set; } } public class Position { public int X { get; set; } public int Y { get; set; } } }
quelle
Wenn Sie hier suchen, sehen Sie mehrere verschiedene Bibliotheken für JSON auf C #.
http://json.org/
Sie finden eine Version für LINQ sowie einige andere. Es gibt ungefähr 7 Bibliotheken für C # und JSON.
quelle
Ist es das, wonach du suchst?
System.Web.Script.Serialization.JavaScriptSerializer
quelle
Schauen Sie sich den Namespace system.web.script.serialization an (ich denke, Sie benötigen .Net 3.5).
quelle
Um eine aktuellere Antwort auf diese Frage zu geben: Ja, .Net enthält JSON-Seriliazer / Deserliazer seit Version 3.5 über den System.Runtime.Serialization.Json-Namespace: http://msdn.microsoft.com/en-us/library /system.runtime.serialization.json(v=vs.110).aspx
Laut dem Ersteller von JSON.Net ist das .Net Framework im Vergleich zu seiner Open Source-Implementierung jedoch sehr viel langsamer.
quelle
Um Ihre erste Frage zu beantworten, liefert Microsoft einen DataContractJsonSerializer aus: siehe msdn Gewusst wie: Serialisieren und Deserialisieren von JSON-Daten
quelle
Probieren Sie das Vici-Projekt Vici Parser aus. Es enthält einen JSON-Parser / Tokeniser. Es funktioniert großartig, wir verwenden es zusammen mit dem MVC-Framework.
Weitere Informationen unter: http://viciproject.com/wiki/projects/parser/home
Ich habe vergessen zu sagen, dass es Open Source ist, so dass Sie jederzeit einen Blick auf den Code werfen können, wenn Sie möchten.
quelle