C# Language
Aan de slag: Json met C #
Zoeken…
Invoering
Het volgende onderwerp introduceert een manier om met Json te werken met C # -taal en concepten van serialisatie en deserialisatie.
Eenvoudig Json-voorbeeld
{
"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
}]
}
Als je nieuw bent in Json, is hier een voorbeeld tutorial .
Eerste dingen eerst: bibliotheek om met Json te werken
Om met Json te werken met C #, moet Newtonsoft (.net-bibliotheek) worden gebruikt. Deze bibliotheek biedt methoden waarmee het programmeerapparaat objecten en meer kan serialiseren en deserialiseren. Er is een zelfstudie als u meer wilt weten over de methoden en het gebruik.
Als u Visual Studio gebruikt, gaat u naar Tools / Nuget Package Manager / Manage Package to Solution / en typt u "Newtonsoft" in de zoekbalk en installeert u het pakket. Als u NuGet niet hebt, kan deze gedetailleerde zelfstudie u helpen.
C # Implementatie
Voordat u wat code leest, is het belangrijk om de hoofdconcepten te onderstrepen die zullen helpen bij het programmeren van applicaties met behulp van json.
Serialisatie : proces waarbij een object wordt geconverteerd naar een stroom bytes die via toepassingen kan worden verzonden. De volgende code kan worden geserialiseerd en omgezet in de vorige json.
Deserialisatie : proces voor het converteren van een json / bytesstroom in een object. Het is precies het tegenovergestelde proces van serialisatie. De vorige json kan worden gedeserialiseerd in een C # -object, zoals in onderstaande voorbeelden wordt getoond.
Om dit uit te werken, is het belangrijk om de json-structuur in klassen om te zetten om reeds beschreven processen te gebruiken. Als u Visual Studio gebruikt, kunt u een json automatisch in een klasse veranderen door "Bewerken / Plakken speciaal / JSON als klassen plakken " te selecteren en de json-structuur te plakken.
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;
}
serialization
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
}
De methode ".SerializeObject" ontvangt als parameter een type object , zodat u er alles in kunt plaatsen.
deserialisatie
U kunt een json overal ontvangen, een bestand of zelfs een server, dus het is niet opgenomen in de volgende code.
static void Main(string[] args)
{
string jsonExample; // Has the previous json
Author author = JsonConvert.DeserializeObject<Author>(jsonExample);
}
De methode ".DeserializeObject" deserialiseert ' jsonExample ' in een " Author " -object. Daarom is het belangrijk om de json-variabelen in de klassendefinitie in te stellen, zodat de methode er toegang toe heeft om het te vullen.
Serialisatie en de-serialisatie Algemene hulpprogramma's
Dit voorbeeld gebruikte de algemene functie voor alle type serialisatie en deserialisatie van objecten.
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; } } }