2012-06-29 43 views
11

Hi tôi có phản ứng json sau, làm thế nào tôi chuyển đổi nó thành một C# lớp đối tượngChuyển đổi json vào đối tượng lớp trong 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

"bắt" nó ??? !! ?? – Jamiec

+0

nếu bạn đang sử dụng một MVC có rất nhiều đó là ra khỏi hộp để hỗ trợ chuyển đổi đó. Bạn cũng có thể xem liên kết này: http://msdn.microsoft.com/en-us/library/bb410770.aspx –

+0

Câu hỏi này cần thêm thông tin. –

Trả lời

21

Trước tiên, hãy tạo lớp để trình bày dữ liệu json của bạn.

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 
} 

Sử dụng Newtonsoft JSON serializer-Deserialize a json string để nó đối tượng lớp tương ứng.

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

Hoặc Sử dụng JavaScriptSerializer để chuyển đổi nó vào một lớp (không được khuyến khích như json serializer newtonsoft dường như hoạt động tốt hơn).

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

Giả sử bạn muốn chuyển đổi nó thành ví dụ của một trường hợp của Customer. lớp học của bạn nên trông giống như các JSON cấu trúc (Properties)

+1

Tôi không thể tạo lớp cho câu trả lời json đó – Vishwajeet

33

tôi khuyên bạn nên sử dụng JSON.NET. nó là một thư viện mã nguồn mở để serialize và deserialize bạn C# đối tượng vào json và Json đối tượng thành các đối tượng .net ...

serialization Ví dụ:

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

So sánh kết quả Để Khác JSON serializiation Kỹ thuật enter image description here

+3

Wow Talha câu trả lời là gì, +1 cho nó :) –

+0

@dotNetSoldier Cảm ơn :) – Talha

+0

Xin chào, Talha vấn đề của tôi là tôi không thể xây dựng cơ sở hạ tầng của một lớp học có kết quả json này – Vishwajeet

0

này sẽ mất một chuỗi json và biến nó thành bất kỳ lớp học mà bạn chỉ định

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

Để tạo ra một lớp json ra một chuỗi, sao chép chuỗi.

Trong Visual Sudio, hãy nhấp vào Chỉnh sửa> Dán đặc biệt> Dán Json làm lớp học.

+3

Thật tuyệt vời khi mọi người chỉ bỏ qua câu trả lời này. Được thăng hạng. –

+1

Vâng, tôi nghĩ rằng đây thực sự là những gì được yêu cầu vào thời điểm đó. Đó là một điều bùng binh trong VS2012 (xem tại đây: https: // stackoverflow.com/questions/18526659/how-to-show-the-dán-json-class-in-visual-studio-2012-khi-click-on-paste) Bây giờ trong VS2017, rất đơn giản. –

Các vấn đề liên quan