简体   繁体   English

C#Json反序列化错误

[英]C# Json deserialization error

I want to convert json string to C# datatable and my json string contains another json string. 我想将json字符串转换为C#数据表,而我的json字符串包含另一个json字符串。 I don't want to convert internal json string (keep it as string only). 我不想转换内部json字符串(仅将其保留为字符串)。 this is my code 这是我的代码

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

But I am getting an error 但是我遇到一个错误

After parsing a value an unexpected character was encountered: a. 解析值后,遇到意外的字符: Path '[0].jsonStr', line 1, position 56. 路径'[0] .jsonStr',第1行,位置56。

Your JSON is invalid. 您的JSON无效。 After unescaping, it becomes the following string: 退出转义后,它将变为以下字符串:

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

Stack Overflow syntax highlighting suggests that your JSON is invalid. 堆栈溢出语法突出显示表明您的JSON无效。
You can also check the JSON validity here . 您还可以在此处检查JSON的有效性。

In order to make it valid, your quotes within jsonStr should have been escaped again: 为了使其有效,您应该再次对jsonStr的引号进行转义:

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

This C# string now contains the following JSON, which is valid: 现在,此C#字符串包含以下有效的JSON:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM