Stellt Microsoft eine Bibliothek für die Arbeit mit JSON in C # bereit? Wenn nicht, welche Open Source-Bibliothek empfehlen Sie?
Antworten:
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 .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; }
}
}
Wenn Sie hier suchen, sehen Sie mehrere verschiedene Bibliotheken für JSON auf C #.
Sie finden eine Version für LINQ sowie einige andere. Es gibt ungefähr 7 Bibliotheken für C # und JSON.
Ist es das, wonach du suchst?
Schauen Sie sich den Namespace system.web.script.serialization an (ich denke, Sie benötigen .Net 3.5).
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.
Um Ihre erste Frage zu beantworten, liefert Microsoft einen DataContractJsonSerializer aus: siehe msdn Gewusst wie: Serialisieren und Deserialisieren von JSON-Daten
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.