以下的方式是目前能想到的,若有更好的方式欢迎留言;
这里分别介绍两种类型转义
第一种格式:
转义结果为:
{\"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;
}
调试结果:
运行结果: