如何从一个JSON字符串删除转义字符 [英] How to remove escape characters from a JSON String

查看:2878
本文介绍了如何从一个JSON字符串删除转义字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我打电话用下面的JSON字符串一个REST API返回:

 {\\轮廓\\:[{\\名称\\:\\城\\,\\rowCount等\\:1,\\位置\\:.. ..........

我试过之前,我反序列化具有以下code删除转义字符:

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

但是当我反序列化,它抛出一个输入字符串是不是在一个correctt格式

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

以下是完整code:

 公共静态SearchRootObject OBJ()
    {
        字符串URL = Glare.searchUrl;
        字符串jsonString =;        //创建web请求
        HttpWebRequest的要求= WebRequest.Create(URL)为HttpWebRequest的;        //获取响应
        变种响应= request.GetResponse();
        流receiveStream = response.GetResponseStream();        //管道流与所需的编码格式更高的水平流读取器。
        StreamReader的readStream =新的StreamReader(receiveStream,Encoding.UTF8);
        jsonString = jsonString + readStream.ReadToEnd();
        jsonString = jsonString.Replace(@\\,​​);        // C#的对象,再反序列化的JSON字符串的presentation
        SearchRootObject的obj = JsonConvert.DeserializeObject< SearchRootObject>(jsonString);
        返回OBJ;
    }


解决方案

切换到使用后的JavaScriptSerializer()反序列化JSON字符串,我意识到,我有一个 INT 键入我的对象属性在JSON字符串的十进制值。我换 INT 双击,这解决了我的问题。无论 JsonConvert.DeserializeObject<> 的JavaScriptSerializer()处理转义字符。有没有必要删除转义字符。
我取代了以下codeS:

  jsonString = jsonString.Replace(@\\,​​);
SearchRootObject的obj = JsonConvert.DeserializeObject< SearchRootObject>(jsonString);
返回OBJ;

使用:

 返回新的JavaScriptSerializer()反序列化< SearchObj.RootObject>(jsonString);

I called a REST API with the following JSON string returned:

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

I tried to remove escape character with the following code before I deserialize it:

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

But then when I deserialize it, it throws an input string was not in a correctt format:

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

The following is the complete code:

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;
    }

解决方案

After switching to use JavaScriptSerializer() to deserialize JSON string , I realized that I have an int type property in my object for a decimal value in the JSON string. I changed int to double, and this solved my problem. Both JsonConvert.DeserializeObject<> and JavaScriptSerializer() handle escape character. There's no need to remove escape character. I replaced the following codes:

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

With:

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

这篇关于如何从一个JSON字符串删除转义字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆