Sök…


Introduktion

Följande ämne kommer att introducera ett sätt att arbeta med Json med C # -språk och begrepp Serialization and Deserialization.

Enkelt Json-exempel

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

Om du är ny i Json, här är en exemplifierad handledning .

Första saker Först: Bibliotek för att arbeta med Json

För att arbeta med Json med C # måste det användas Newtonsoft (.net-biblioteket). Detta bibliotek erbjuder metoder som gör att programmeraren kan serialisera och deserialisera objekt och mer. Det finns en handledning om du vill veta detaljer om dess metoder och användningsområden.

Om du använder Visual Studio, gå till Verktyg / Nuget Package Manager / Hantera paket till lösning / och skriv "Newtonsoft" i sökfältet och installera paketet. Om du inte har NuGet kan denna detaljerade handledning hjälpa dig.

C # Implementering

Innan du läser någon kod är det viktigt att undersöka de viktigaste koncepten som hjälper till att programmera applikationer med json.

Serialisering : Process för att konvertera ett objekt till en ström av byte som kan skickas via applikationer. Följande kod kan serialiseras och konverteras till föregående json.

Deserialization : Process för att konvertera en json / byte-ström till ett objekt. Det är exakt motsatt serieprocess. Den föregående json kan deserialiseras till ett C # -objekt som visas i exemplen nedan.

För att lösa detta är det viktigt att förvandla json-strukturen till klasser för att använda processer som redan beskrivits. Om du använder Visual Studio kan du omvandla en json till en klass automatiskt genom att välja "Redigera / klistra in special / klistra in JSON som klasser" och klistra in json-strukturen.

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

serialisering

 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
    }

Metoden ".SerializeObject" får som parameter ett typobjekt , så att du kan lägga till vad som helst i det.

deserialiseringsundantag

Du kan ta emot en json var som helst, en fil eller till och med en server så att den inte ingår i följande kod.

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

Metoden ".DeserializeObject" deserialiserar ' jsonExample ' till ett " Author " -objekt. Det är därför det är viktigt att ställa in json-variablerna i klassernas definition, så att metoden får åtkomst till den för att fylla den.

Serialization & De-Serialization Common Utilities-funktion

Det här exemplet brukade vanligt förekomma för seriellisering och deserialisering av alla objekt.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow