Bietet Microsoft eine Bibliothek für die Arbeit mit JSON in C#? Wenn nicht, welche Open Source-Bibliothek empfehlen Sie?JSON-Bibliothek für C#
Antwort
Was ist der Vorteil der Verwendung von JSON.NET gegenüber System.Web.Script.Serialization.JavaScriptSerializer? – weilin8
erlaubt es Ihnen, als Klasseneigenschaft zu verwenden, sondern nur Strings serialisieren, für einen ... gibt es viel mehr .. – balexandre
Verwenden Sie JavaScriptSerializer nicht etwa 40x langsamer als die meisten anderen JSON-Serialisierer, die ich getestet habe. – mythz
Ist das wonach Sie suchen?
Werfen Sie einen Blick auf die System.Web.Script.Serialization Namespace (ich glaube, Sie .NET 3.5 benötigt)
Wenn Sie hier betrachten, werden Sie verschiedene Bibliotheken für JSON auf sehen C#.
Sie eine Version für LINQ sowie einige andere. Es gibt ungefähr 7 Bibliotheken für C# und JSON.
Das FRAMEWORK unterstützt JSON durch JavaScriptSerializer. Hier ist ein gutes Beispiel für den Einstieg.
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; }
}
}
das ist guter Code, wie könnte ich eine der Klassen, um die Ergebnisse zurück zu bekommen? Zum Beispiel ObjectName, um in ein Textfeld mit dem Ergebnis 'Testname' auszugeben? Ich habe versucht 'test = GoogleTranslator.GoogleJSON.NameTypePair.ObjectName' messagebox.show (test) – Ebikeneser
Versuchen Sie das Vici-Projekt, Vici Parser. Es enthält einen JSON-Parser/Tokeniser. Es funktioniert großartig, wir verwenden es zusammen mit dem MVC-Framework.
Mehr Infos unter: http://viciproject.com/wiki/projects/parser/home
Ich habe vergessen zu sagen, dass es Open Source ist, so dass Sie immer einen Blick auf den Code nehmen können, wenn Sie mögen.
Sie sollen auch meinen ServiceStack versuchen JsonSerializer - es ist die schnellste .NET JSON Serializer zur Zeit based on the benchmarks of the leading JSON serializers und unterstützt die Serialisierung all POCO Typen, Datacontracts, Lists/Wörterbücher, Interfaces, Vererbung, Spät gebundenen Objekte, einschließlich anonyme Typen, usw.
Grund Beispiel
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = customer.ToJson();
var fromJson = json.FromJson<Customer>();
Hinweis: Nur Microsofts JavaScriptSerializer verwenden, wenn die Leistung für Sie nicht wichtig ist, wie ich es aus meiner Benchmarks seit seinem bis zu 40x-100x langsamer als th verlassen hätte Die anderen JSON-Serialisierer.
Ihre erste Frage zu beantworten, hat Microsoft ein DataContractJsonSerializer versenden: yes, .Net enthält JSON seriliazer/deserliazer seit Version 3.5 über das System: Msdn How to: Serialize and Deserialize JSON Data
Um eine mehr up to date Antwort auf diese Frage geben sehen .Runtime.Serialization.Json Namensraum: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json(v=vs.110).aspx
Aber nach dem Schöpfer von JSON.Net, das .Net Framework im Vergleich zu seiner Open-Source-Implementierung ist sehr viel langsamer.
- 1. ReSharper für c/C++
- 2. Testframework für Funktions-/Systemtests für C/C++?
- 3. Markdown-Implementierungen für C/C++
- 4. CMake Befehlsliste für C/C++
- 5. C# Delegate für C++ Callback
- 6. Option Parser für C/C++?
- 7. Ganzzahlen für const C++, c
- 8. Einführung in C# für C/C++ - Benutzer
- 9. Vorschlag für Vorlagenbuch für C++?
- 10. C-Plugin für SonarQube
- 11. Python für C++ - Entwickler
- 12. Bitmanipulationsbibliothek für ANSI C
- 13. C++ Zugang für
- 14. C++ - Bibliotheken für Bildsegmentierung
- 15. IDE für Objective C
- 16. C++ Bibliothek für XMLRPC
- 17. Speicherprofiler für C
- 18. Zertifizierungen für C# Entwickler
- 19. Plotten Paket für C++
- 20. PubSub-Bibliothek für C#
- 21. C#: N Für Loops
- 22. Tweener-Framework für C++?
- 23. C# Eingabewerte für GradeBook
- 24. „onEachSubelement (...)“ Methode für C++
- 25. Spielplätze für Objective-C
- 26. C++ Wrapper für Ncurses?
- 27. Lernen C für Programmierer
- 28. SystemParametersInfo Parameterdefinitionen für C#
- 29. Debugger für C++ Code
- 30. P2P-Bibliothek für C++
Meinen Sie konsumieren, erstellen oder beides? –
Sowohl verbrauchen und erstellen. Danke – weilin8