Поиск…


Вступление

В следующем разделе будет представлен способ работы с Json с использованием языка C # и концепций сериализации и десериализации.

Простой пример Json

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

Если вы новичок в Json, вот пример учебника .

Первые вещи Сначала: Библиотека для работы с Json

Для работы с Json с использованием C # необходимо использовать библиотеку Newtonsoft (.net). Эта библиотека предоставляет методы, которые позволяют программировать сериализацию и десериализацию объектов и многое другое. Есть учебник, если вы хотите узнать подробности о его методах и обычаях.

Если вы используете Visual Studio, откройте « Диспетчер пакетов / Управление пакетами» / «Управление пакетом» в Solution / и введите «Newtonsoft» в панель поиска и установите пакет. Если у вас нет NuGet, это подробное руководство может вам помочь.

Реализация C #

Прежде чем читать какой-то код, важно отказаться от основных концепций, которые помогут программировать приложения с помощью json.

Сериализация : процесс преобразования объекта в поток байтов, который может быть отправлен через приложения. Следующий код может быть сериализован и преобразован в предыдущий json.

Deserialization : процесс преобразования json / потока байтов в объект. Это точно противоположный процесс сериализации. Предыдущий json можно десериализовать в объект C #, как показано в примерах ниже.

Чтобы это исправить, важно превратить структуру json в классы, чтобы использовать уже описанные процессы. Если вы используете Visual Studio, вы можете автоматически превратить json в класс, просто выбрав «Edit / Paste Special / Paste JSON as Classes» и вставку 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;
}

Сериализация

 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
    }

Метод «.SerializeObject» получает в качестве параметра объект типа , поэтому вы можете поместить в него что-либо.

Десериализация

Вы можете получить json из любого места, файла или даже сервера, чтобы он не был включен в следующий код.

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

Метод «.DeserializeObject» десериализует « jsonExample » в объект « Автор ». Вот почему важно установить json-переменные в определении классов, поэтому метод обращается к нему, чтобы заполнить его.

Функция сериализации и де-сериализации Common Utilities

Этот пример используется для общей функции для сериализации и десериализации всех типов объектов.

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow