2012-06-29 3 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

"catch" it ??? !! ?? – 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); 

Производительность по сравнению с другими serializiation Методы JSON enter image description here

+3

Wow Talha какой ответ, + 1 для него :) –

+0

@dotNetSoldier Спасибо :) – Talha

+0

Привет, Talha моя проблема в том, что я не могу построить datastructure класса, который держит этот результат 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: // stackoverflow.com/questions/18526659/how-to-show-the-paste-json-class-in-visual-studio-2012-when-click-on-paste) Теперь в VS2017 очень просто. –

Смежные вопросы