Sai*_*ung 5 json.net c#-4.0 asp.net-web-api
我使用以下返回的JSON字符串调用了REST API:
"{\"profile\":[{\"name\":\"city\",\"rowCount\":1,\"location\": ............
Run Code Online (Sandbox Code Playgroud)
在反序列化之前,我尝试使用以下代码删除转义符:
jsonString = jsonString.Replace(@"\", " ");
Run Code Online (Sandbox Code Playgroud)
但是,当我反序列化它时,它会抛出一个input string was not in a correct format:
SearchRootObject obj = JsonConvert.DeserializeObject<SearchRootObject>(jsonString);
Run Code Online (Sandbox Code Playgroud)
以下是完整的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
在切换到使用JavaScriptSerializer()反序列化 JSON string 后,我意识到我的对象中有一个int类型property用于 JSON 字符串中的十进制值。我更改int为double,这解决了我的问题。和JsonConvert.DeserializeObject<>都JavaScriptSerializer()处理转义字符。无需删除转义字符。我替换了以下代码:
jsonString = jsonString.Replace(@"\", " ");
SearchRootObject obj = JsonConvert.DeserializeObject<SearchRootObject>(jsonString);
return obj;
Run Code Online (Sandbox Code Playgroud)
和:
return new JavaScriptSerializer().Deserialize<SearchObj.RootObject>(jsonString);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21620 次 |
| 最近记录: |