我调用了一个REST API,返回了以下
JSON字符串:
"{\"profile\":[{\"name\":\"city\",\"rowCount\":1,\"location\": ............
jsonString = jsonString.Replace(@"\"," ");
但是当我反序列化它时,它会抛出输入字符串不是正确的格式:
SearchRootObject obj = JsonConvert.DeserializeObject<SearchRootObject>(jsonString);
以下是完整的代码:
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; }
解决方法
切换到使用JavaScriptSerializer()反序列化JSON字符串后,我意识到我的对象中有一个int类型属性,用于JSON字符串中的十进制值.我将int改为double,这解决了我的问题. JsonConvert.DeserializeObject<>和JavaScriptSerializer()处理转义字符.没有必要删除转义字符.
我替换了以下代码:
我替换了以下代码:
jsonString = jsonString.Replace(@"\"," "); SearchRootObject obj = JsonConvert.DeserializeObject<SearchRootObject>(jsonString); return obj;
附:
return new JavaScriptSerializer().Deserialize<SearchObj.RootObject>(jsonString);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。