0

こんにちはC#DataContractJsonSerializerの助けを借りてjsonオブジェクトを解析しようとしていますそしてこれはjsonがどのように見えるかです

{"user_id": "121"、 "Q1": "質問1"、 "Q2": "質問2"、 "Q3":"質問3"}

質問の数は200〜500になる可能性があるため、このJsonを解析するために500個の変数を使用してDataContractを作成したくないので、このクラスオブジェクトのコンストラクターなどを番号で呼び出す方法があるかどうかを考えていました。 jSonにQ1-Q30がある場合、このようなパラメーター

Objectparse new_object = new Objectparse(30);

実行時に変数Q1からQ30を作成するのはどれですか?そしてJsonを解析します

4

1 に答える 1

2

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"]);
...

dynamicまた、4.0より古いバージョンの.NETを使用していて、この機能を使用できない場合は、次のようにすることができます。

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"
        }
    ]
}

これは、質問のコレクションを含む強く型付けされたオブジェクトにシリアル化できるようになりました。

于 2012-07-16T16:59:40.610 に答える