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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow