Suche…


Einführung

Im folgenden Thema wird eine Möglichkeit zum Arbeiten mit Json unter Verwendung der C # -Sprache und Konzepte der Serialisierung und Deserialisierung beschrieben.

Einfaches Json-Beispiel

{
    "id": 89,
    "name": "Aldous Huxley",
    "type": "Author",
    "books":[{
               "name": "Brave New World",
               "date": 1932 
             },
             {
               "name": "Eyeless in Gaza",
               "date": 1936
             },
             {
               "name": "The Genius and the Goddess",
               "date": 1955 
             }]  
}

Wenn Sie neu bei Json sind, finden Sie hier ein beispielhaftes Tutorial .

Das Wichtigste zuerst: Bibliothek, um mit Json zu arbeiten

Um mit Json unter Verwendung von C # arbeiten zu können, müssen Sie Newtonsoft (.net-Bibliothek) verwenden. Diese Bibliothek bietet Methoden, mit denen der Programmierer Objekte und mehr Objekte serialisieren und deserialisieren kann. Es gibt ein Tutorial, wenn Sie Details zu den Methoden und Verwendungen erfahren möchten.

Wenn Sie Visual Studio verwenden, wechseln Sie zu Tools / Nuget Package Manager / Package to Solution /, und geben Sie "Newtonsoft" in die Suchleiste ein. Installieren Sie das Paket. Wenn Sie nicht über NuGet verfügen, kann Ihnen dieses ausführliche Tutorial helfen.

C # -Implementierung

Bevor Sie Code lesen, ist es wichtig, die wichtigsten Konzepte zu verstehen, die bei der Programmierung von Anwendungen mit json hilfreich sind.

Serialisierung : Konvertieren eines Objekts in einen Bytestrom, der durch Anwendungen gesendet werden kann. Der folgende Code kann serialisiert und in den vorherigen Json konvertiert werden.

Deserialisierung : Prozess der Umwandlung eines Json / Streams von Bytes in ein Objekt. Es ist genau das Gegenteil der Serialisierung. Der vorherige Json kann in ein C # -Objekt deserialisiert werden, wie in den folgenden Beispielen gezeigt.

Um dies zu klären, ist es wichtig, die json-Struktur in Klassen umzuwandeln, um die bereits beschriebenen Prozesse zu verwenden. Wenn Sie Visual Studio verwenden, können Sie einen Json automatisch in eine Klasse umwandeln, indem Sie "Bearbeiten / Einfügen Spezial / JSON als Klassen einfügen " auswählen und die Json-Struktur einfügen.

using Newtonsoft.Json;

  class Author
{
    [JsonProperty("id")] // Set the variable below to represent the json attribute 
    public int id;       //"id"
    [JsonProperty("name")]
    public string name;
    [JsonProperty("type")]
    public string type;
    [JsonProperty("books")]
    public Book[] books;

    public Author(int id, string name, string type, Book[] books) {
        this.id = id;
        this.name = name;
        this.type= type;
        this.books = books;
    }
}

 class Book
{
   [JsonProperty("name")]
   public string name;
   [JsonProperty("date")]
   public DateTime date;
}

Serialisierung

 static void Main(string[] args)
    {
        Book[] books = new Book[3];
        Author author = new Author(89,"Aldous Huxley","Author",books);
        string objectDeserialized = JsonConvert.SerializeObject(author); 
        //Converting author into json
    }

Die Methode „.SerializeObject“ erhält als Parameter einen Typ Objekt, so dass man alles hineingesteckt werden.

Deserialisierung

Sie können einen Json von überall, von einer Datei oder sogar von einem Server empfangen, sodass er im folgenden Code nicht enthalten ist.

static void Main(string[] args)
{
    string jsonExample; // Has the previous json
    Author author = JsonConvert.DeserializeObject<Author>(jsonExample);
}

Die Methode ".DeserializeObject" deserialisiert " jsonExample " in ein " Author " -Objekt. Aus diesem Grund ist es wichtig, die Json-Variablen in der Klassendefinition zu setzen, damit die Methode darauf zugreifen kann, um sie zu füllen.

Serialization & Des-Serialization Allgemeine Dienstprogramme

In diesem Beispiel wurde die allgemeine Funktion für die Serialisierung und Deserialisierung von Objekten aller Art verwendet.

using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;

namespace Framework
{
public static class IGUtilities
{
        public static string Serialization(this T obj)
        {
        string data = JsonConvert.SerializeObject(obj);
        return data;
        }

        public static T Deserialization(this string JsonData)
        {
        T copy = JsonConvert.DeserializeObject(JsonData);
        return copy;
        }

         public static T Clone(this T obj)
        {
            string data = JsonConvert.SerializeObject(obj);
            T copy = JsonConvert.DeserializeObject(data);
            return copy;
        }
}
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow