如何转换 json 字符串

本文关键字:json 字符串 转换 何转换 | 更新日期: 2023-09-27 18:36:18

似乎无法做到这一点。我有这个 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'
}

如何转换 json 字符串

我把它放到JsonLint中并得到一个错误。其无效的 JSON

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

您只需要稍微扩展一下对象模型即可覆盖它。根据您在示例中的内容,它将如下所示:

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;

JSON 无效的原因是您的"args"属性在方括号内包含一个键/值对,这不是一个有效的数组。我猜它应该是这样的:

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