C# Language
Per iniziare: Json con C #
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; } } }