2012-06-29 37 views
11

Ciao ho la seguente risposta JSON, come mi converto in un C# classe di oggettiConverti JSON in oggetto classe in C#

{ "err_code": "0", "org": "CGK", "des": "SIN", "flight_date": "20120719", 
"schedule": 
[ 
["W2-888","20120719","20120719","1200","1600","03h00m","737-200","0",[["K","9"],["F","9"],["L","9"],["M","9"],["N","9"],["P","9"],["C","9"],["O","9"]]], 
["W2-999","20120719","20120719","1800","2000","01h00m","MD-83","0",[["K","9"],["L","9"],["M","9"],["N","9"]]] 

] } 
+0

"catch" it ??? !! ?? – Jamiec

+0

se si utilizza un MVC c'è molto che è pronto per supportare quella conversione. È inoltre possibile controllare questo collegamento: http://msdn.microsoft.com/en-us/library/bb410770.aspx –

+0

Questa domanda richiede ulteriori informazioni. –

risposta

21

Prima creare una classe per rappresentare i dati JSON.

public class MyFlightDto 
{ 
    public string err_code { get; set; } 
    public string org { get; set; } 
    public string flight_date { get; set; } 
    // Fill the missing properties for your data 
} 

Uso Newtonsoft JSON serializzatore per Deserialize a json string al suo corrispondente oggetto classe.

var jsonInput = "{ org:'myOrg',des:'hello'}"; 
MyFlightDto flight = Newtonsoft.Json.JsonConvert.DeserializeObject<MyFlightDto>(jsonInput); 

O Utilizzare JavaScriptSerializer per convertirlo in una classe (non raccomandata come JSON serializzatore newtonsoft sembra funzionare meglio).

string jsonInput="have your valid json input here"; // 
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
Customer objCustomer = jsonSerializer.Deserialize<Customer >(jsonInput) 

Supponendo che si desidera convertire a un'istanza Customer di classe. La classe deve simile al JSON struttura (Beni)

+1

Non riesco a costruire classe per quella risposta JSON – Vishwajeet

33

vi consiglio di utilizzare JSON.NET. è una libreria open source per serializzare e deserializzare il vostro C# oggetti in JSON e JSON oggetti in oggetti .NET ...

serializzazione Esempio: Confronto

Product product = new Product(); 
product.Name = "Apple"; 
product.Expiry = new DateTime(2008, 12, 28); 
product.Price = 3.99M; 
product.Sizes = new string[] { "Small", "Medium", "Large" }; 

string json = JsonConvert.SerializeObject(product); 
//{ 
// "Name": "Apple", 
// "Expiry": new Date(1230422400000), 
// "Price": 3.99, 
// "Sizes": [ 
// "Small", 
// "Medium", 
// "Large" 
// ] 
//} 

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json); 

prestazioni Per Altri JSON serializiation tecniche enter image description here

+3

Wow Talha che risposta, + 1 per questo :) –

+0

@dotNetSoldier Grazie :) – Talha

+0

Ciao, Talha il mio problema è che non sono in grado di costruire una struttura di una classe che detiene questo risultato JSON – Vishwajeet

0

Questo richiederà una stringa JSON e trasformarlo in ogni classe si specifica

public static T ConvertJsonToClass<T>(this string json) 
    { 
     System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
     return serializer.Deserialize<T>(json); 
    } 
9

Per creare una classe JSON fuori una stringa, copiate la stringa.

In Visual Sudio, fare clic su Modifica> Incolla speciale> Incolla Json come classi.

+3

È incredibile come tutti salta appena oltre questa risposta. Upvoted. –

+1

Sì, penso che questo sia davvero ciò che è stato chiesto in quel momento. Era una specie di cosa rotatoria in VS2012 (vedi qui: https: // StackOverflow.it/questions/18526659/how-to-show-the-paste-json-class-in-visual-studio-2012-quando-clic-on-incolla) Ora in VS2017, molto semplice. –