簡體   English   中英

具有動態結構的類對象

[英]Class Object with Dynamic Structure

嗨我試圖用C#DataContractJsonSerializer的幫助解析一個json對象這就是json可能看起來像

{“user_id”:“121”,“Q1”:“問題1”,“Q2”:“問題2”,“Q3”:“問題3”}

問題的數量可以是200-500,所以我不想用500變量制作一個DataContract來解析這個Json,所以我在想是否有一種方法可以用一個數字來調用構造函數或者這個類對象的東西如果在jSon中有Q1-Q30,則這樣的參數

Objectparse new_object = new Objectparse(30);

哪個會在運行時創建Q1到Q30的變量? 並解析Json

你可以使用JavaScriptSerializer

var json = @"{""user_id"":""121"",""Q1"":""question 1"",""Q2"":""question 2"",""Q3"":""question 3""}";
var serializer = new JavaScriptSerializer();
dynamic result = serializer.DeserializeObject(json);
Console.WriteLine(result["Q1"]);
Console.WriteLine(result["Q2"]);
...

如果您使用的是舊版本的.NET而不是4.0並且無法使用dynamic功能,則可以執行以下操作:

var json = @"{""user_id"":""121"",""Q1"":""question 1"",""Q2"":""question 2"",""Q3"":""question 3""}";
var serializer = new JavaScriptSerializer();
var result = (IDictionary<string, object>)serializer.DeserializeObject(json);
Console.WriteLine(result["Q1"]);
Console.WriteLine(result["Q2"]);
...

但我要指出,這是一個非常糟糕的JSON設計。 設計這個類的人可能不知道javascript數組:

{
    "user_id": "121",
    "questions": [
        {
            "key": "Q1",
            "value": "question 1"
        },
        {
            "key": "Q2",
            "value": "question 2"
        },
        {
            "key": "Q3",
            "value": "question 3"
        }
    ]
}

現在可以將其序列化為包含問題集合的強類型對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM