C#Json反序列化错误

本文关键字:错误 反序列化 C#Json | 更新日期: 2023-09-27 18:28:22

我想将json字符串转换为C#数据表,我的json字符串包含另一个json字符串。我不想转换内部json字符串(只将其作为字符串)。这是我的代码

 string js = "[{'"FirstName'":'"first'",'"LastName'":'"second'",'"jsonStr'":'"[{'"abc'":'"a'",'"xyz'":'"x'"}]'"}]";
            DataTable dt = (DataTable)JsonConvert.DeserializeObject(js, (typeof(DataTable)));
            gv.DataSource = dt;
            gv.DataBind();

但我收到一个错误

分析值后,遇到一个意外字符:a.Path"[0].jsonStr",第1行,位置56。

C#Json反序列化错误

您的JSON无效。取消捕获后,它变成以下字符串:

[
    {
        "FirstName" : "first",
        "LastName" : "second",
        "jsonStr" : "[{" abc ":" a "," xyz ":" x "}]"
    }
]

堆栈溢出语法高亮显示表明您的JSON无效
您也可以在此处检查JSON的有效性。

为了使其有效,您在jsonStr中的引号应该再次转义:

string js = "[{'"FirstName'":'"first'",'"LastName'":'"second'",'"jsonStr'":'"[{'''"abc'''":'''"a'''",'''"xyz'''":'''"x'''"}]'"}]";

这个C#字符串现在包含以下有效的JSON:

[
    {
        "FirstName": "first",
        "LastName": "second",
        "jsonStr": "[{'"abc'":'"a'",'"xyz'":'"x'"}]"
    }
]