如何转换json字符串?

时间:2012-06-05 21:53:45

标签: c# json string javascriptserializer

似乎无法让这个工作。我有这个json字符串,我想将它转换为C#对象:

  

{ “名称”: “mousePos结构”, “ARGS”:[{ “mouseDet”:{ “RID”: “1”, “POSX”:1277, “花束”: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'
}

3 个答案:

答案 0 :(得分:1)

我将其放入JsonLint并收到错误。它无效的JSON

{
    "name": "mousePos",
    "args": [
        "mouseDet": {
            "rid": "1",
            "posx": 1277,
            "posy": 275
        }
    }    //-- THIS should not be here.
]
}

答案 1 :(得分:0)

JSON无效的原因是因为你的&#34; args&#34; property包含方括号内的键/值对,它不是有效数组。我猜它应该是这样的:

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

答案 2 :(得分: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;