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 回答