我的JSON字符串长这样。请注意它包含转义字符。
string json = "\"{\\\"Status\\\":true,\\\"ID\\\":24501}\"";
当我使用如下的解析方法时,遇到了下面所述的错误:
JObject o = JObject.Parse(json);
读取JsonReader
时出现错误。当前JsonReader
项不是对象,而是String
。
我该如何解决此错误或者有其他方式可以解析我的 JSON 字符串并获取值吗?
我的JSON字符串长这样。请注意它包含转义字符。
string json = "\"{\\\"Status\\\":true,\\\"ID\\\":24501}\"";
JObject o = JObject.Parse(json);
读取JsonReader
时出现错误。当前JsonReader
项不是对象,而是String
。
我该如何解决此错误或者有其他方式可以解析我的 JSON 字符串并获取值吗?
看起来您的对象被双重编码了。请尝试:
string json = "{\"Status\":true,\"ID\":24501}";
json.Replace("\\\\", "\\")
的方法替换它们即可。 - SolarBearjson = json.Replace(@"\", string.Empty).Trim(new char[]{'\"'})
正如SolarBear在他的评论中所说,问题是双重转义。
要获得正确的格式,就像这样:
string json = "{\"Status\":true,\"ID\":24501}";
做类似这样的事情:
json = json.Replace("\\\\", "\\");
这里的格式应该是这样的:
string jsonNew = @"{'Status': True,'ID': 24501 }";
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;
}
}