Windows.Data.Json vs JSON.net

Seit sich die Welt von XML ab und JSON zugewandt hat, benötigt der Entwickler auch einen passenden Parser. Irgendwie gab es für .net nichts vernünftiges aus dem Hause Microsoft. Schnell hat sich die Klassenbibliothek JSON.NET in sämtliche Projekte eingeschlichen.

Schneller soll sie sein und vor allem gratis. Verglichen wurde mit dem DataContractJsonSerializer. Allein das schreiben des Namens dauert über 3x länger!

Seit Windows 8 hat Microsoft nachgerüstet und liefert nun eine API für JSON – Data.JSON. Diese ist auch in der modernen Windows 10 Universal Plattform inkludiert.

Um eine Abschätzung über implementierungsaufwand und Performance geben zu können, zwei einfache Beispiele um Beispieldaten zu parsen und in eine anonyme generische Liste zu laden.

Die Daten sind wie folgt strukturiert

   1:  {"Groups":[
   2:    {
   3:      "UniqueId": "Group-1",
   4:      "Title": "Group Title: 1",

Erstes VB.NET Beispiel mit JSON.NET

   1:  Dim obj = JsonConvert.DeserializeObject(json)
   2:  Dim g As JArray = obj("Groups")
   3:  Dim qq = From c In g
   4:                   Select New With {.title = c.Item("Title")}

 

Zum Vergleich die windows.data.json

   1:  Dim jsonO = JsonObject.Parse(json)
   2:  Dim jsonA = jsonO.GetObject().GetNamedArray("Groups")
   3:  Dim q = From itm In jsonA
   4:                  Select New With {.title = itm.GetObject.GetNamedString("Title")}

 

Der Geschwindigkeitstest lässt keinen nennenswerten Unterschiede in Prozessorlast oder Ausführungsdauer erkennen. Da die Testumgebung auch wechselnde externe Einflüsse hatte, verzichte ich auf die Veröffentlichung der Zahlen.

Die modernen UWP Apps können ohne API Dlls ausgeliefert werden, was mit JSON.NET nicht geht. Spricht also für den nativen JSON Parser. Außerdem halte ich persönlich die Anzahl der externen Bibliotheken ganz gerne auf minimal Niveau.

Zu guter Letzt ist noch zu beachten das die Firma Newtonsoft, durchaus berechtigt, auch Kaufoptionen anbietet. Ich frage mich zwar wer das wirklich tut, aber Lizenzrecht hat man mit seiner Software sonst keines

Final: ein guter Zeitpunkt über die Ablöse von JSON.NET nachzudenken.

Kommentare sind geschlossen