天巨郁闷,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对象序列化的标准方式是使用JSON(JavaScript Object Notation),它是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 JSON的语法主要是基于JavaScript的五种原始类型:数字、...
本主题将深入探讨如何在Windows Forms(WF)环境中,利用C#语言进行对象的直接保存与读取,以及通过对象序列化和反序列化的方式实现对象的保存与恢复。 首先,我们来理解什么是对象的直接保存与读取。在C#中,可以...
然而,值得注意的是,不是所有的JavaScript对象都可以被直接序列化和反序列化。JSON.stringify()方法不能处理函数、循环引用的对象、日期、正则表达式等非基本类型的数据。对于这种情况,我们需要自定义处理函数或者...
本篇文章将深入探讨如何利用原生循环依赖关系来有效地序列化复杂JavaScript对象和ES6类。 首先,我们需要理解JavaScript中的引用类型和作用域。在JavaScript中,对象是引用类型,这意味着当你创建一个新对象并将其...
本文将深入探讨如何使用JavaScript对表单数据进行序列化和反序列化。 序列化是将数据结构或对象转换为字符串的过程,便于存储或传输。在HTML表单中,序列化通常是指将表单元素的值转换为URL编码的字符串,以便通过...
在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许开发者将复杂的对象状态转换为可存储或可传输的数据格式,如XML、JSON或二进制流。对象序列化通常用于持久化数据、跨进程通信、网络传输等场景。下面...
使用jackson-js ,您可以使用装饰器(例如@JsonProperty() , @JsonFormat() , @JsonIgnore()轻松地操作JavaScript对象/值的序列化/反序列化。 但是,此库在JSON.stringify使用JSON.parse和JSON.stringify 。 ...
序列化是指将C++的对象转换为JSON字符串的过程,以便在网络上传输或保存到文件中。常见的C++ JSON序列化库有RapidJSON、nlohmann/json、jsoncpp等。以nlohmann/json为例,它的使用非常直观: 1. 引入库: ```cpp #...
"关于XML、JSON的序列化、反序列化对象或集合" XML和JSON是当前最广泛使用的数据交换格式,它们的序列化和反序列化是软件开发中的常见需求。本文将详细介绍XML和JSON的序列化和反序列化对象或集合的实现方法。 XML...
JavaScript序列化对象是将JavaScript对象转换成一种字符串格式,以便于存储或传输,这种字符串通常可以被还原(反序列...这些内容对于理解JavaScript对象序列化以及如何在实际项目中实现序列化与反序列化机制非常重要。
提出了一种基于JSON的对象序列化算法,该算法通过分析JSON文法并建立对象导航图,透明地将Java对象序列化成JSON表达式,使客户端能够很好地利用JavaScript引擎来解析JSON响应,有效地解决了解析XML所造成的缺陷。
尽管WPF本身主要关注UI,但对象序列化是一个通用的概念,可以在任何.NET应用程序中使用,包括WPF应用。 对象序列化是指将对象的状态转换为字节流的过程,以便它可以存储到磁盘、数据库中或者在网络上传输。这个过程...
这里的“一个对象发序列化的工具函数”是指一个JavaScript开发中的实用工具,它能够将JavaScript对象转换为可传输或存储的格式,例如JSON字符串,然后在需要时将其还原回原来的对象形式。这种功能对于网络应用、数据...
这个类可以将.NET对象序列化为JSON字符串,同样也可以将JSON字符串反序列化为.NET对象。通过这个类,我们可以创建一个序列化辅助类,如示例中的`JsonHelper`,它包含两个泛型方法:`JsonSerializer`用于序列化,`...
主要介绍了JavaScript中的对象序列化介绍,JavaScript中的对象序列化是通过JSON.stringify()来实现的,而反序列化则通过JSON.parse()来实现,需要的朋友可以参考下
XML序列化是将对象的状态转换为XML格式的过程,这样可以将数据保存到文件或通过网络进行传输。反序列化则是将XML数据恢复为原始对象结构的过程。这两个操作在编程中非常常见,尤其是在需要跨平台或跨语言传递数据时...
2. 数据序列化:序列化是将对象转换为可传输或存储的格式,对于JSON,这意味着将JavaScript对象转换为JSON字符串。在JavaScript中,我们可以使用`JSON.stringify()`方法实现这一过程。例如: ```javascript let obj ...
序列化是指将对象的状态转化为可存储或可传输的形式,比如JSON(JavaScript Object Notation)格式。JSON是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在Java中,可以使用`java.io....
在这个场景中,"前台提交到controller序列化复杂对象"是一个关键的技术环节。本文将深入探讨如何使用System.Web.Extensions命名空间中的JavaScriptSerializer类来实现这个目标。 首先,让我们理解什么是序列化。...