使用Newtonsoft.Json解析Json字符串时出错

8

我的JSON字符串长这样。请注意它包含转义字符。

string json = "\"{\\\"Status\\\":true,\\\"ID\\\":24501}\"";

当我使用如下的解析方法时,遇到了下面所述的错误:
JObject o = JObject.Parse(json);

读取JsonReader时出现错误。当前JsonReader项不是对象,而是String

我该如何解决此错误或者有其他方式可以解析我的 JSON 字符串并获取值吗?


没有答案,我也遇到了同样的问题。 - 1Mayur
6个回答

4

去除第一个和最后一个引号:

string json = "{\"Status\":true,\"ID\":24501}";

请见Json格式此处

2

看起来您的对象被双重编码了。请尝试:

string json = "{\"Status\":true,\"ID\":24501}";

4
那个 JSON 字符串是我从一个 API 得到的。我该如何去除转义字符? - SVI
2
@SVI:我来晚了,但如果有人需要的话,只需使用类似json.Replace("\\\\", "\\")的方法替换它们即可。 - SolarBear

1
你需要像这样的东西。
json = json.Replace(@"\", string.Empty).Trim(new char[]{'\"'})

0

正如SolarBear在他的评论中所说,问题是双重转义。

要获得正确的格式,就像这样:

string json = "{\"Status\":true,\"ID\":24501}";

做类似这样的事情:

json = json.Replace("\\\\", "\\");

0

这里的格式应该是这样的:

string jsonNew = @"{'Status': True,'ID': 24501 }";

0
今天遇到了类似的问题。我的解决方案包含在这个扩展方法中(使用 c# ):
public static class StringExtensions
{
    public static string RemoveDoubleEncoding(this string text)
    {
        if(string.IsNullOrEmpty(text))
            return string.Empty;
        var result = text.TrimStart('\"').TrimEnd('\"');
        result = result.Replace(@"\", string.Empty);
        return result;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接