C# Language
Rozpoczęcie pracy: Json z C #
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; } } }