Ricerca…


introduzione

Il seguente argomento introdurrà un modo per lavorare con Json usando il linguaggio C # e concetti di serializzazione e deserializzazione.

Semplice esempio di 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 
             }]  
}

Se sei nuovo in Json, ecco un tutorial esemplificato .

Per prima cosa: Libreria per lavorare con Json

Per lavorare con Json usando C #, è necessario utilizzare Newtonsoft (.net library). Questa libreria fornisce metodi che consentono al programmatore di serializzare e deserializzare oggetti e altro ancora. C'è un tutorial se vuoi sapere i dettagli sui suoi metodi e usi.

Se utilizzi Visual Studio, vai su Strumenti / Gestore pacchetti Nuget / Gestisci pacchetto su soluzione / e digita "Newtonsoft" nella barra di ricerca e installa il pacchetto. Se non hai NuGet, questo tutorial dettagliato potrebbe aiutarti.

Implementazione C #

Prima di leggere del codice, è importante comprendere i concetti principali che aiuteranno a programmare le applicazioni usando json.

Serializzazione : processo di conversione di un oggetto in un flusso di byte che può essere inviato attraverso le applicazioni. Il seguente codice può essere serializzato e convertito nel json precedente.

Deserializzazione : processo di conversione di un json / flusso di byte in un oggetto. È esattamente il processo opposto di serializzazione. Il json precedente può essere deserializzato in un oggetto C # come dimostrato negli esempi di seguito.

Per risolvere questo problema, è importante trasformare la struttura di JSON in classi per utilizzare i processi già descritti. Se si utilizza Visual Studio, è possibile trasformare automaticamente un json in una classe semplicemente selezionando "Modifica / Incolla speciale / Incolla JSON come classi" e incollando la struttura di 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;
}

serializzazione

 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
    }

Il metodo ".SerializeObject" riceve come parametro un oggetto tipo , quindi puoi inserire qualcosa.

deserializzazione

È possibile ricevere un json da qualsiasi luogo, un file o anche un server, in modo che non sia incluso nel seguente codice.

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

Il metodo ".DeserializeObject" deserializza " jsonExample " in un oggetto " Autore ". Questo è il motivo per cui è importante impostare le variabili json nella definizione delle classi, in modo che il metodo acceda per riempirlo.

Funzione di utilità comune di serializzazione e decodificazione

Questo esempio ha utilizzato la funzione comune per tutti i tipi di serializzazione e deserializzazione degli oggetti.

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow