3

次の json 応答を逆シリアル化する必要があります (Resultリストの長さは可変です)。

{
    "ResultSet": {
        "Query": "volkswagen",
        "Result": [
            {
                "symbol": "VLKAY",
                "name": "Volkswagen AG",
                "exch": "PNK",
                "type": "S",
                "exchDisp": "OTC Markets",
                "typeDisp": "Equity"
            },
            {
                "symbol": "VOW3.DE",
                "name": "Volkswagen AG",
                "exch": "GER",
                "type": "S",
                "exchDisp": "XETRA",
                "typeDisp": "Equity"
            },
            {
                "symbol": "VOW.DE",
                "name": "Volkswagen AG",
                "exch": "GER",
                "type": "S",
                "exchDisp": "XETRA",
                "typeDisp": "Equity"
            }
        ]
    }
}

私が得たもの:

JavaScriptSerializer js = new JavaScriptSerializer();
string jsonString = "...String is here...";
SearchObj obj = js.Deserialize<SearchObj>(jsonString);

通常、適切なオブジェクトを作成する必要があることを理解しています。たとえばSearchObj、これは塗りつぶされますが、この場合、このオブジェクトがどのように見えるかは完全にはわかりません。私が思いついた:

class Data 
{
    public string symbol { get; set; }
    public string name { get; set; }
    public string exch { get; set; }
    public string type { get; set; }
    public string exchDisp { get; set; }
    public string typeDisp { get; set; }
}

class Container 
{
    public string Query { get; set; }
    public List<Data> Result { get; set; }
}

class SearchObj
{
    public Container ResultSet { get; set; }
}

しかし、それは機能していませんResultSet = null

4

3 に答える 3

1

クラスコンテナを次のように変更してみてください

 class Container 
 {
     public string Query { get; set; }
     public Data[] Result { get; set; }
 } 

私の観察に基づいて、私はそれをテストしていません

于 2013-03-18T12:14:00.657 に答える
1

自分の質問に答えるといつも気分が悪くなりますが、これで終わりです。

基本的に私の考えは正しかったのですが、1 つだけ間違いを犯しました。

class SearchObj
{
    public Container ResultSet { get; set; }
}

使用する

Container obj = js.Deserialize<Container>(jsonString);

それ以外の

SearchObj obj = js.Deserialize<SearchObj>(jsonString);

トリックをした。どちらもData[]コンテナList<Data>で動作します。

編集: giammins のコメントから、一部のマシンではその変更がなくても動作しているようですが、それは未定義の動作の場合だと思います。

于 2013-03-18T12:23:22.627 に答える
0

http://www.json2charp.comを使用してクラスを作成できます。

于 2013-08-04T16:48:43.150 に答える