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
}

NewtonsoftJSONシリアライザーを使用して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/のテキストボックスに貼り付け [生成]ボタンをクリックします。

csクラスは、以下のようにそのcsファイルを使用して生成されます。

vargeneratedcsResponce = 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 に答える