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

Liersch.Json ist eine .NET-Bibliothek zum Parsen und Erzeugen von JSON-Ausdrücken. Die Implementierung basiert auf C# 3.0 und ist für viele .NET-Plattformen geeignet. Liersch.Json kann über NuGet bezogen werden. Der Quellcode wird auf GitHub gepflegt.

Die folgenden Plattformen werden 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)

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

Parsen von JSON-Ausdrücken

Die statische Funktion SLJsonNode.Parse sollte für das Parsen von JSON-Ausdrücken verwendet werden. Diese Funktion arbeitet im restriktiven Modus. Die Syntax des JSON-Ausdrucks wird ebenfalls geprüft. Liegt eine Syntaxverletzung vor, wird die Ausnahme vom Typ SLJsonException generiert.

Alternativ kann die Klasse SLJsonParser zum Parsen verwendet werden. Dabei können verschiedene Eigenschaften geändert werden, um den Modus festzulegen. Beispielsweise unterstützt SLJsonParser optional einfache Anführungszeichen.

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

  var root=SLJsonNode.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().Serialize(e1);
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