天巨郁闷,js处理数据时,定义了一个数组,然后数组下存储的是自定义对象,然后在将数组存储到LocalStorage里的时候,由于HTML5的LocalStorage只能存储字符串,所以,,要将其序列化然后还要能读出来,然后,郁闷的事发生了。。。
也许是我的见识不够吧,愣是找不到一个内置的保险的转换方法。虽说Array对象有toString和toSource,但令我郁闷的是,在对Array用toSource的时候得到的是序列化的Object,而并没有将Object序列化为json。汗。。直接对Object用?没这个方法的,愣是没找到将自定义Object直接序列化为json的方法,孤陋寡闻了阿。
没办法,最后只得自己网上找一个序列化的函数,然后遍历数据最后拼接了,郁闷归郁闷,不过也算是解决问题了,,不知道有没有高手有更好的方法?
下面贴一个函数,以免以后用的时候找不到,不管怎么说,这东西以后应该会常用到的:
function _ToJSON(o){
if(o == null)
return “null”;
switch(o.constructor) {
case String:
var s = o; // .encodeURI();
if(s.indexOf(“}”)<0)s = ‘”‘ + s.replace(/(["\\])/g, ‘\\$1′) + ‘”‘;
s = s.replace(/\n/g,”\\n”);
s = s.replace(/\r/g,”\\r”);
return s;
case Array:
var v = [];
for(var i=0; i<o.length; i++)
v.push(_ToJSON(o[i])) ;
if(v.length<=0)return “\”\”";
return “” + v.join(“,”) + “”;
case Number:
return isFinite(o) ? o.toString() : _ToJSON(null);
case Boolean:
return o.toString();
case Date:
var d = new Object();
d.__type = “System.DateTime”;
d.Year = o.getUTCFullYear();
d.Month = o.getUTCMonth() +1;
d.Day = o.getUTCDate();
d.Hour = o.getUTCHours();
d.Minute = o.getUTCMinutes();
d.Second = o.getUTCSeconds();
d.Millisecond = o.getUTCMilliseconds();
d.TimezoneOffset = o.getTimezoneOffset();
return _ToJSON(d);
default:
if(o["toJSON"] != null && typeof o["toJSON"] == “function”)
return o.toJSON();
if(typeof o == “object”) {
var v=[];
for(attr in o) {
if(typeof o[attr] != “function”)
v.push(‘”‘ + attr + ‘”: ‘ + _ToJSON(o[attr]));
}
if(v.length>0)
return “{” + v.join(“,”) + “}”;
else
return “{}”;
}
alert(o.toString());
return o.toString();
}
};
分享到:
相关推荐
主要为大家介绍了JavaScript对象序列化的相关资料,需要的朋友可以参考下
使用jackson-js ,您可以使用装饰器(例如@JsonProperty() , @JsonFormat() , @JsonIgnore()轻松地操作JavaScript对象/值的序列化/反序列化。 但是,此库在JSON.stringify使用JSON.parse和JSON.stringify 。 ...
利用原生循环依赖关系序列化复杂JavaScript对象或ES6类
提出了一种基于JSON的对象序列化算法,该算法通过分析JSON文法并建立对象导航图,透明地将Java对象序列化成JSON表达式,使客户端能够很好地利用JavaScript引擎来解析JSON响应,有效地解决了解析XML所造成的缺陷。
主要介绍了JavaScript中的对象序列化介绍,JavaScript中的对象序列化是通过JSON.stringify()来实现的,而反序列化则通过JSON.parse()来实现,需要的朋友可以参考下
node-msgpack, 面向NodeJS的空间高效对象序列化库 node-msgpack 是 NodeJS插件的插件,提供使用 MessagePack插件库序列化和序列化JavaScript对象的API 。 原生 JSON 对象相比,这里插件的性能并不太差,序列化数据所...
NULL 博文链接:https://goro.iteye.com/blog/1671322
本文介绍了Java对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和技术所需要的全部信息。这篇文章侧重于可以用来生成 Java对象以数据为中心的视图的技术。演示可以把 JavaBeans变成XML文档的各种方法,...
javascript对象的序列化器/反序列化器 目录 自定义序列化器 安装 使用npm安装: $ npm install typeserializer --save 您还需要安装反射元数据填充程序: $ npm install reflect-metadata --save 将reflect-...
fast-safe-stringify, 安全且快速地序列化JavaScript对象 fast-safe-stringify安全和快速的序列化替代替代 JSON.stringify 。优雅地处理圆形结构而不是抛出。提供确定的("稳定") 版本,也可以优雅地处理圆形结构。 ...
序列化和反序列化javascript对象,保留您的对象模型。 javascript和nodejs中的持久性和序列化。 介绍 serialijse是一个简单JavaScript持久性框架,它克服了JSON持久性的两个主要限制: serialijse很好地处理了循环...
当然可以了,因为JavaScript对象自身都提供了一个toString()方法,默认就是返回简单对象的Literal形式。 我们需要作的就是判断对象的具体类型,然后分别Serialize每种对象,再输出为Object的Literal语法形式就行了。...
Kvin丰富JavaScript序列化库。 概述 Kvin-发音为“ Kevin”-以与JSON和平共处的方式序列化(和反序列化)JavaScript类型以通过网络传输或存储到磁盘,但是它支持更多数据类型,包括: undefined,null,NaN,...
本工具函数是针对下面这种类型的字符串对象制作的,使用时若有特别需求可以自行更改
本文实例讲述了JSON与js对象序列化。分享给大家供大家参考,具体如下: JavaScript对象表示法(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,它基于js字面量表示法,是js的一个子集。虽然是...
JavaScript提供的一个操作JSON序列化的方法,其作用:将JSON对象序列化为字符串(第一个参数);分离提取部分数据,转换处理键值(第二个参数);美化输出结果(第三个参数)
主要介绍了基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象) 的相关资料,需要的朋友可以参考下