C# Language
Начало работы: Json с C #
Поиск…
Вступление
В следующем разделе будет представлен способ работы с 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; } } }