2014-09-22 36 views
3

删除转义字符我叫具有以下JSON字符串REST API返回:如何从一个JSON字符串

"{\"profile\":[{\"name\":\"city\",\"rowCount\":1,\"location\": ............ 

我试着用下面的代码删除转义字符之前,我反序列化:

jsonString = jsonString.Replace(@"\", " "); 

但是当我反序列化,它抛出一个input string was not in a correctt format

SearchRootObject obj = JsonConvert.DeserializeObject<SearchRootObject>(jsonString); 

在F ollowing是完整的代码:

public static SearchRootObject obj() 
    { 
     String url = Glare.searchUrl; 
     string jsonString = ""; 

     // Create the web request 
     HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 

     // Get response 
     var response = request.GetResponse(); 
     Stream receiveStream = response.GetResponseStream(); 

     // Pipes the stream to a higher level stream reader with the required encoding format. 
     StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 
     jsonString = jsonString + readStream.ReadToEnd(); 
     jsonString = jsonString.Replace(@"\", " "); 

     // A C# object representation of deserialized JSON string 
     SearchRootObject obj = JsonConvert.DeserializeObject<SearchRootObject>(jsonString); 
     return obj; 
    } 
+0

能否请您发布包含您遇到问题的确切JSON和您试图反序列化的类的完整示例?另外,你为什么要删除“\”字符? – 2014-09-23 12:51:15

+0

@AndrewWhitaker,我解决了这个问题,我发布了解决方案作为答案。 – 2014-09-23 13:45:45

回答

1

切换使用JavaScriptSerializer()反序列化JSON字符串后,我意识到,我在我的对象的intproperty在JSON字符串十进制值。我将int更改为double,这解决了我的问题。 JsonConvert.DeserializeObject<>JavaScriptSerializer()都处理转义字符。没有必要删除转义字符。 我换成如下代码:

jsonString = jsonString.Replace(@"\", " ");   
SearchRootObject obj = JsonConvert.DeserializeObject<SearchRootObject>(jsonString); 
return obj; 

有了:

return new JavaScriptSerializer().Deserialize<SearchObj.RootObject>(jsonString);