2011-08-15 65 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; 
    } 
}