C# Json 反序列化错误

C# Json deserialization error

我想将 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();

但是我收到一个错误

After parsing a value an unexpected character was encountered: a. Path '[0].jsonStr', line 1, position 56.

您的JSON无效。反转义后变成如下字符串:

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

Stack Overflow 语法高亮显示您的 JSON 无效。
您还可以检查 JSON 有效性 here.

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

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

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

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