浅谈javascript的序列化

感觉一讲到序列化,可能是由于java用的比较习惯的原因。。。(ps:虽然还是一名渣渣)马上就想到的是java中使用的序列化,比如实现serializable接口。今天在使用javascript中的时候,才发现序列化也可以在js中用到,真的是目光短浅。。。一声长叹。。。哎。。。。。接下来正文:

最长用到的是,把js的对象进行序列化为字符串进行存储,然后再反序列化为对象。额,就是这么绕口。那么在接下来就开始上代码了:

1.序列化:JSON.stringify()
2.反序列化:JSON.parse()

举个栗子:

var temp={"key":"nickname","value":"昵称"};
var str=JSON.stringify(temp);//序列化一下下
我们打印str来look<img alt="微笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif" />look:如下

可以明显的看到是一个字符串喽(两边加了""),那么我们就可以按照String的方式来随意搞它。。。当你再次想使用“对象”来搞的时候,在反序列回来。

var b=JSON.parse(str);//在使用parse反序列化look<img alt="微笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif" />look


明显看到是一个object。。。

可能你会问,讲了半天有卵用。。。那我告诉你,你没有使用的时候,也真的是没有卵用,但是我还真的用到这玩意了,在讲一个列子吧。。。(有点泄露公司机密了,希望没有人看到哦)


首先,给了一个数组,内容是:

var test=[{"key":"nickname","value":"昵称"},{"key":"phone","type":"WORK","value":"18621016200"},{"key":"phone","type":"test","value":"test"},{"key":"phone","type":"CELL","value":"18621016200"}]

看到这么多个相同的iphone(多了个i),一会有用到。

接下来,要求你按照给定的格式,写一个js函数,来把上面的数组转化一下下喽。

格式如下:

/*目标格式
{
    key1 : {
        key : xxx,
        value : xxx,
        ... : ...
    }

    or

    key2 : [//多个key值相同存数组
        {
            key : xxx,
            value : xxx,
            xxx : xxx
        },
        {
        },
        ...
    ]
}
 */
看不懂吗??怪我喽,自己看去。

接下来写一个函数,苦思冥想半天,搞出来了:

function json2obj(a)
 {
    var content={}, temp="";
   for(var obj in a)
    {
      temp=a[obj].key;
      if(content[temp]==null)//都是单个的key值撒。。。
      {
      content[temp]=a[obj];
      }
      else if(content[temp].length>1){
         var tempstr2=JSON.stringify(a[obj]);//判断是否已经有相同的key值存在,且已经超过两个
         content[temp].push(JSON.parse(tempstr2));
      }
      else
      {//判断是否有相同的key值存在,转换为数组存储咯
        var tempstr=JSON.stringify(content[temp]);
        var tempstr2=JSON.stringify(a[obj]);
        content[temp]=[JSON.parse(tempstr)];
         content[temp].push(JSON.parse(tempstr2));
      }
    }
 }
可能写的不是很完美,希望大神们轻喷。。。
总结完了,下班休息。。。后续更新,敬请期待。。。 可怜

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值