首页 > 代码库 > 节省Json流量

节省Json流量

今天在实验当中发现了很不错的节省json流量方式,来做个笔记给大家分享一下。

如果跟服务器传递键值对的数组,我们一般会采用下面方式

创建一个字段

public class kv

{

public string key { get; set; };

public string value { get; set; };

}

实例化li

List<kv> li = new List<kv>();

添加参数

li.add(new li{key="cn",value="http://www.mamicode.com/china"});

li.add(new li{ key="mn", value="http://www.mamicode.com/mongol"});

让后转换成json

using System.Web.Script.Serialization;命名空间

JavaScriptSerializer jss=new JavaScriptSerializer();实例化。JavaScriptSerializer()下有Serializer方法,它是把object序列化成json字符串。

String json=jss.Serialize(li);

Json的值"[{"key":"cn","value":"china"},{"key":"mn","value":"mongol"}]",json.lenght长度60。

Js:    var a=JSON.parse(json);

    for (var i = 0; i < a.lenght; i++) {

    alert(a[i].k+":"+a[i].v);

    }

但发现json字符串里的""value""和""value""很多余!希望是"[{"cn":"china"},{"mn":"mongol"}]", json.lenght长度31。

下面实现该方法:

因为Serializer方法接受object,我们可以把Dictionary转换成json。

Dictionary<string,string> dic = new Dictionary<string,string>();//实例化Dictionary键值对

添加参数

dic.add("cn","china");

dic.add("mn","mongol");

 

JavaScriptSerializer jss = new JavaScriptSerializer();

String json=jss.Serialize(dic);

 

Json的值"[{"cn":"china"},{"mn":"mongol"}]"

 

Js:    var a=JSON.parse(json);    //序列化

    for(k in a){            //js中for相当于foreach,注意:他会遍历出key的值

    alert(k+":"+a[k]);        //根据已知的key找出对应的value

    }

 

对本例子节约了48.33%的流量哦。

节省Json流量