31

如何将以下 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"]]]
    ]
}
4

6 回答 6

105

要从 json 字符串创建一个类,请复制该字符串。

在 Visual Studio 中,单击编辑 > 选择性粘贴 > 将 Json 粘贴为类。

于 2017-12-29T13:46:04.323 回答
60

首先创建一个类来表示您的 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 序列化程序将 json 字符串反序列化为其对应的类对象。

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类的实例。你的类应该看起来类似于JSON结构(属性)

于 2012-06-29T11:08:18.823 回答
52

我建议你使用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 序列化技术的性能比较 在此处输入图像描述

于 2012-06-29T11:07:24.053 回答
4

复制您的 Json 并粘贴到http://json2csharp.com/上的文本框,然后单击 Generate 按钮,

将使用该 cs 文件生成一个 cs 类,如下所示:

var generatedcsResponce = JsonConvert.DeserializeObject(yourJson);

其中 RootObject 是生成的 cs 文件的名称;

于 2019-01-17T10:18:02.530 回答
1

这将接受一个 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);
    }
于 2016-07-21T20:21:57.007 回答
0
class Program
{
    static void Main(string[] args)
    {
        var res = Json; //Json that has to be converted

        Response resp = new Response();
        resp = JsonSerializer.Deserialize<Response>(res);

        Console.WriteLine(res);
    }
}

public class Response
{
    public bool isValidUser { get; set; }
    public string message { get; set; }
    public int resultKey { get; set; }
}
于 2021-06-28T08:12:10.503 回答