C#将Json格式的数据进行转义操作

以下的方式是目前能想到的,若有更好的方式欢迎留言;
这里分别介绍两种类型转义
第一种格式:
这里写图片描述
转义结果为:

{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"page\":\"88\",\"isNonProfit\":\"true\"}

第二种含数组的格式:
这里写图片描述
转义结果:

{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"page\":88,\"isNonProfit\":true,\"links\":[{\"strname\":\"Google\",\"strurl\":\"http://www.google.com\"}]}

一、只有一层的json数据

demo:

public String testZy(String name,String url,String page,String isNonProfit)
        {
            Dictionary<String, String> dic = new Dictionary<string, string>();
            dic.Add("name", name);
            dic.Add("url", url);
            dic.Add("page", page);
            dic.Add("isNonProfit", isNonProfit);
            JavaScriptSerializer js = new JavaScriptSerializer();
            String data = js.Serialize(dic);

            return data;
        }

运行结果为:
这里写图片描述

打印结果为:
这里写图片描述

第二种、带数组的json

由三种方式可以达到转义的效果
1、使用实体
demo:

public class TestZyData
    {
        public String name { get; set; }
        public String url { get; set; }
        public String page { get; set; }
        public String isNonProfit { get; set; }
        public Links[] links{get;set;}

    }
    public class Links
    {
        public String strname;
        public String strurl;
    }


//此方法的外层类就不体现了
public String arrayZy(String strname,String strurl,String name, String url, String page,String isNonProfit)
        {
            //使用实体
            Links link = new Links
            {
                strname = strname,
                strurl = strurl
            };
            TestZyData zyData = new TestZyData
            {
                links = new Links[] { link },
                name = name,
                url = url,
                page = page,
                isNonProfit = isNonProfit
            };
            JavaScriptSerializer js = new JavaScriptSerializer();
            String zyStr = js.Serialize(zyData);
            System.Diagnostics.Debug.WriteLine("含数组的json字符串转义结果为:" + zyStr);
            return zyStr;
        }

转义结果:
这里写图片描述
注意:如果用第一种字典的方式进行转义的话红色框那里会再次转义,变成这样

{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"address\":\[{\\\"street\\\":\\\"科技园路.\\\",\\\"city\\\":\\\"江苏苏州\\\",\\\"country\\\":\\\"中国\\\"}]}

运行结果为:
这里写图片描述

2、用纯字典方式
demo:

//使用纯字典模式实现
        public String arrayZy2(String strname, String strurl, String name, String url, String page, String isNonProfit)
        {
            Dictionary<String, Object> dic = new Dictionary<string, Object>();
            dic.Add("strname", strname);
            dic.Add("strurl", strurl);
            Dictionary<String, Object> sdic = new Dictionary<string, Object>();
            sdic.Add("name", name);
            sdic.Add("url", url);
            sdic.Add("page", page);
            sdic.Add("isNonProfit", isNonProfit);

            Dictionary<String, Object>[] dics = new Dictionary<string, Object>[] { dic };
            sdic.Add("links", dics);
            JavaScriptSerializer js = new JavaScriptSerializer();
            String zyStr = js.Serialize(sdic);
            return zyStr;
        }

调试结果:
这里写图片描述
运行结果:
这里写图片描述

3、使用字典和list组合(与纯字典的类似)
demo:

 public String arrayZy3(String strname, String strurl, String name, String url, String page, String isNonProfit)
        {
            Dictionary<String, Object> dic = new Dictionary<string, Object>();
            dic.Add("strname", strname);
            dic.Add("strurl", strurl);
            Dictionary<String, Object> sdic = new Dictionary<string, Object>();
            sdic.Add("name", name);
            sdic.Add("url", url);
            sdic.Add("page", page);
            sdic.Add("isNonProfit", isNonProfit);
            List<Dictionary<String, Object>> list = new List<Dictionary<string, Object>>();
            list.Add(dic);
            sdic.Add("list",list);
            JavaScriptSerializer js = new JavaScriptSerializer();
            String result = js.Serialize(sdic);
            return result;
        }

调试结果:
这里写图片描述
运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39885282/article/details/80023758