2011-08-15 32 views
8

我的JSON字符串看起来像这样。请注意,它具有转义字符。使用Newtonsoft.Json解析Json字符串时出错

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

当我使用Parse方法如下面我碰上如下所述的错误:

JObject o = JObject.Parse(json); 

错误从JsonReader读取JObject。当前JsonReader项目不是一个对象:String

我该如何摆脱此错误或有任何其他方法来解析我的json字符串并获取值?

+0

没有这方面的答案,米面临相同的概率 – 1Mayur

回答

4

删除第一个和最后报价:

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

见JSON格式here

2

看起来你的对象似乎是双重编码的。尝试:

在这里
string json = "{\"Status\":true,\"ID\":24501}"; 
+4

这JSON字符串是我从一个API获得。如何删除转义字符?\ – SVI

+2

@SVI:我迟到了派对,但如果有人需要它,只需使用类似'json.Replace(“\\\\”,“\\”)的替换它们' – SolarBear

0

格式应该是这样的:

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

你需要像这样

json = json.Replace(@"\", string.Empty).Trim(new char[]{'\"'}) 
0

由于SolarBear在他的评论说,这个问题是双重转义。

得到适当的格式,例如:

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

做这样的事情:

json = json.Replace("\\\\", "\\"); 
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; 
    } 
}