2012-06-29 139 views
11

嗨,我有以下JSON響應,我如何將其轉換爲C#類對象轉換成JSON對象類在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

「抓」它??? !! ?? – Jamiec

+0

如果您使用的是MVC,則有很多功能可以支持該轉換。您也可以查看此鏈接:http://msdn.microsoft.com/en-us/library/bb410770.aspx –

+0

此問題需要更多信息。 –

回答

21

首先創建一個類來表示你的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 
} 

使用Newtonsoft JSON序列Deserialize a json string到它的相應的類對象。

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

或使用JavaScriptSerializer將其轉換爲一個類(不推薦作爲newtonsoft JSON序列似乎有更好的表現)。

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

假設您想將其轉換爲Customer classe的實例。你的類應該看起來類似於JSON結構(屬性)

+1

我無法爲該json響應創建類 – Vishwajeet

33

我建議你使用JSON.NET。它是一個開源的庫序列化和反序列化的C#對象轉換成JSON和JSON對象到.NET對象......

序列化實例:

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

性能相較於其他JSON序列技術 enter image description here

+3

哇塔爾哈什麼答案,+ 1它:) –

+0

@dotNetSoldier謝謝:) – Talha

+0

嗨,塔爾哈我的問題是我不能夠建立一個類的數據結構持有這個JSON結果 – Vishwajeet

0

這將需要一個JSON字符串,並把它變成任何類指定

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

要創建一個JSON類掀起了字符串,複製字符串。

在Visual Sudio中,單擊編輯>粘貼特殊>粘貼Json作爲類。

+3

令人驚訝的是,每個人只是跳過這個答案。 Upvoted。 –

+1

是的,我認爲這是當時所要求的。這在VS2012中是一種迂迴的事情(請參閱https://topicoverflow.com/)。com/questions/18526659/how-to-show-the-paste-json-class-in-visual-studio-2012-click-on-paste)現在在VS2017中,非常簡單。 –