0

これを機能させることができないようです。私はこのjson文字列を持っていて、それをC#オブジェクトに変換したいと思います。

{"name": "mousePos"、 "args":[{"mouseDet":{"rid": "1"、 "posx":1277、 "posy":275}}]}

私は試してきましたがJavaScriptSerializer、運がありません。posxとposyの値を取得する方法がわかりません。誰かが私がこれをどのように行うかを提案できますか?助けてくれてありがとう。

編集:

public class JsonData
{
    public string name { get; set; }
}
public Form1()
{
    // ---- Other stuff here ----

    string json = data.MessageText; // The json string.

    JavaScriptSerializer ser = new JavaScriptSerializer();
    JsonData foo = ser.Deserialize<JsonData>(json);


    MessageBox.Show(foo.name); // Shows 'mousePos'
}
4

3 に答える 3

1

それをJsonLintにドロップして、エラーが発生しました。その無効なJSON

{
    "name": "mousePos",
    "args": [
        "mouseDet": {
            "rid": "1",
            "posx": 1277,
            "posy": 275
        }
    }    //-- THIS should not be here.
]
}
于 2012-06-05T21:56:11.233 に答える
0

JSONが無効である理由は、「args」プロパティに角かっこ内にキーと値のペアが含まれているためです。これは有効な配列ではありません。私はそれが次のようなものであるべきだと推測しています:

{
    "name":"mousePos",
    "args":[{"mouseDet":{"rid":"1","posx":1277,"posy":275}}]
}
于 2012-06-05T21:59:50.433 に答える
0

オブジェクトモデルを少し拡張してカバーする必要があります。あなたの例で得たものに基づいて、それは次のようになります:

public class JsonData
{
    public string name { get; set; }
    public Arguments[] args { get; set; }
}

public class Arguments
{
    public MouseDet mouseDet { get; set; }
}

public class MouseDet
{
    public int rid { get; set; }
    public int posx { get; set; }
    public int posy { get; set; }
}

...

var posx = foo.args[0].mouseDet.posx;
于 2012-07-10T23:34:31.937 に答える