Liersch.Json – JSON-Unterstützung für .NET

Liersch.Json ist eine .NET-Bibliothek zum Parsen und zum Erzeugen von JSON-Ausdrücken. Die Implementierung basiert auf C# 3.0 und sollte mit den meisten .NET-Plattformen funktionieren. Momentan werden folgende Plattformen explizit unterstützt:

  • .NET Framework 2.0, 3.0, 3.5, 4.0, 4.5 und Mono
  • .NET Core 1.0
  • .NET Standard 1.0
  • .NET Micro Framework 4.4 (Reflection-basierete Funktionen ausgeschlossen)

Die Bibliothek kann über GitHub bezogen werden: https://github.com/steffen-liersch/Liersch.Json

Copyright © 2013-2018 Dipl.-Ing. (BA) Steffen Liersch

Die Klasse SLJsonParser

SLJsonParser analysiert einem JSON-Ausdruck und liefert eine Instanz der Klasse SLJsonNode zur weiteren Verarbeitung. Dabei wird die Syntax des JSON-Ausdrucks überprüft. Im Falle von Syntaxverletzungen wird die Ausnahme vom Typ SLJsonException generiert. In JSON werden doppelten Anführungszeichen für Zeichenketten verwendet. SLJsonParser unterstützt zusätzlich einfache Anführungszeichen.

public static void RunExample1()
{
  string jsonExpression=@"
  {
    addressBook: [
      {lastName: 'Average', firstName: 'Joe'},
      {lastName: 'Doe', firstName: 'Jane'},
      {lastName: 'Smith', firstName: 'John'}
    ]
  }";

  SLJsonNode root=SLJsonParser.Parse(jsonExpression);
  SLJsonNode book=root["addressBook"];
  if(book.IsArray)
  {
    int c=book.Count;
    for(int i=0; i<c; i++)
    {
      SLJsonNode entry=book[i];
      string ln=entry["lastName"];
      string fn=entry["firstName"];
      Console.WriteLine(fn+" "+ln);
    }
  }
}

Die Klasse SLJsonNode

SLJsonNode repräsentiert die zentrale Klasse der Bibliothek. Sie dient zum Speichern eines JSON-Ausdrucks und bietet zahlreiche Funktionen und Eigenschaften zur Analyse und Bearbeitung. Operatoren erleichtern den lesenden und schreibenden Zugriff auf Werte.

public static void RunExample3()
{
  var root=new SLJsonNode();
  root["addressBook"]=CreateAddressBook();
  Console.WriteLine(root.AsJson);
}

static SLJsonNode CreateAddressBook()
{
  var book=new SLJsonNode();

  book[0]["LastName"]="Average";
  book[0]["firstName"]="Joe";

  book[1]["LastName"]="Doe";
  book[1]["firstName"]="Jane";

  book[2]["LastName"]="Smith";
  book[2]["firstName"]="John";

  return book;
}

SLJsonSerializer and SLJsonDeserializer

Die Klassen SLJsonSerializer and SLJsonDeserializer dienen zur Reflection-basierten Serialisierung und Deserialisierung von Klassen. Dafür müssen Felder und Eigenschaften lediglich mit dem Attribut SLJsonMemberAttribute versehen werden. Nur öffentliche Felder und Eigenschaften sollten mit diesem Attribut markiert werden. Für die Deserialisierung wird ein öffentlicher Standardkonstruktor benötigt.

class Example
{
  [SLJsonMember("IntegerArray", SLJsonMemberType.ValueArray)]
  public int[] IntegerArray;

  [SLJsonMember("StringValue")]
  public string StringValue;

  public string NotSerializedString;
}

Im folgenden Beispiel wird eine Instanz einer serialisierbaren Klasse erstellt, serialisiert und wieder deserialisiert.

var e1=new Example();
e1.IntegerArray=new int[] { 10, 20, 30, 700, 800 };
e1.StringValue="Example Text";
e1.NotSerializedString="Other Text";

string json=new SLJsonSerializer().SerializeObject(e1).ToString();
Example e2=new SLJsonDeserializer().Deserialize<Example>(json);

Die Reflection-basierten Serialisierung und Deserialisierung ist für das .NET Micro Framework nicht verfügbar.

Ähnliche Artikel

Schreiben Sie einen Kommentar