Szukaj…


Wprowadzenie

Poniższy temat wprowadzi sposób pracy z Jsonem przy użyciu języka C # oraz pojęcia serializacji i deserializacji.

Prosty przykład Jsona

{
    "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 
             }]  
}

Jeśli jesteś nowy w Jsonie, oto przykładowy samouczek .

Po pierwsze: biblioteka do pracy z Jsonem

Aby pracować z Jsonem przy użyciu C #, należy użyć Newtonsoft (biblioteka .net). Ta biblioteka zapewnia metody, które pozwalają programiście serializować i deserializować obiekty i nie tylko. Istnieje samouczek, jeśli chcesz poznać szczegóły na temat jego metod i zastosowań.

Jeśli korzystasz z programu Visual Studio, przejdź do Narzędzia / Menedżer pakietów Nuget / Zarządzaj pakietami do rozwiązania / i wpisz „Newtonsoft” w pasku wyszukiwania i zainstaluj pakiet. Jeśli nie masz NuGet, ten szczegółowy samouczek może ci pomóc.

Implementacja C #

Przed odczytaniem kodu ważne jest, aby zapoznać się z głównymi pojęciami, które pomogą programować aplikacje przy użyciu json.

Serializacja : proces przekształcania obiektu w strumień bajtów, które można wysłać za pośrednictwem aplikacji. Poniższy kod można przekształcić do postaci szeregowej i przekonwertować na poprzedni plik Json.

Deserializacja : proces konwersji json / strumienia bajtów w obiekt. Jest to dokładnie odwrotny proces serializacji. Poprzedni json można przekształcić do postaci szeregowej w obiekt C #, jak pokazano w poniższych przykładach.

Aby to rozwiązać, ważne jest, aby przekształcić strukturę JSON w klasy, aby móc korzystać z procesów już opisanych. Jeśli korzystasz z programu Visual Studio, możesz automatycznie zmienić json w klasę, wybierając „Edytuj / Wklej specjalnie / Wklej JSON jako klasy” i wklejając strukturę json.

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;
}

Serializacja

 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
    }

Metoda „.SerializeObject” odbiera jako parametr obiekt typu , dzięki czemu można do niego wstawić wszystko.

Deserializacja

Możesz otrzymać json z dowolnego miejsca, pliku lub nawet serwera, więc nie jest on uwzględniony w poniższym kodzie.

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

Metoda „.DeserializeObject” deserializuje „ jsonExample ” w obiekt „ Author ”. Dlatego ważne jest, aby ustawić zmienne json w definicji klas, aby metoda miała do niego dostęp w celu wypełnienia go.

Serialization & De-Serialization Funkcja Common Utilities

Ta próbka służy do wspólnej funkcji serializacji i deserializacji wszystkich typów obiektów.

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow