JavaScript中的对象序列化介绍
与Java语言一样,JavaScript中可以对对象进行序列化和反序列化,藉此对对象进行保存。ECMAScript 5标准中,JavaScript中的对象序列化是通过JSON.stringify()来实现的,而反序列化则通过JSON.parse()来实现:
var o = {x:1, y:29, z:42};
var s = JSON.stringify(o);
console.log(s);//{"x":1,"y":29,"z":42}
var c = JSON.parse(s);
console.log(c);//Object {x=1, y=29, z=42}
对于仅支持ECMAScript 3标准的浏览器,可以使用Douglas Crockford写的json2.js (https://github.com/douglascrockford/JSON-js)。
在对对象进行序列化过程中,NaN、Infinity和-Infinity将被序列化成”null”;Date对象将被序列化成表示相应时间的字符串(但当使用JSON.parse()反序列化时,该时间字符串将作为普通字符串存在,不会被重新构建为Date对象)。
使用JSON.stringify()序列化对象时,所序列化的property仅限于对象自身(Own)的enumerable的property。而在JSON.stringify()运行时,JavaScript会先查找需要序列化的对象中是否有toJSON()方法,如果toJSON()方法存在,则调用该方法并将其返回的结果作为序列化的目标。如果toJSON()方法不存在,则使用默认的序列化方法。
相关推荐
-
JSON与js对象序列化实例详解
本文实例讲述了JSON与js对象序列化.分享给大家供大家参考,具体如下: JavaScript对象表示法(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,它基于js字面量表示法,是js的一个子集.虽然是一个js的子集但是他与语言无关,它可以用于在现在所有的编程语言编写的应用程序之间进行数据交换.是一种文本格式,比较容易读写. JSON是一个容纳"名/值"对的无序集合,名字可以是任意字符串,值可以使任意的JSON类型的值.大多数编程语言都有
-
详解JavaScript对象序列化
一.什么是对象序列化? 对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显易懂!): 序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程(来自"百度百科-序列化",学术性强,略显高端): 二.为什么会有对象序列化? 世间万物,都有其存在的原因.为什么会有对象序列化呢?因为程序猿们需要它.既然是对象序列化,那我们就先从一个对象说起: var obj = {x:1, y:2}; 当这句代码运行时,对象obj的内容会
-
js解析与序列化json数据(一)json.stringify()的基本用法
早期的JSON解析器基本上就是使用JavaScript的eval()函数.由于JSON是JavaScript语法的自己,因此eval()函数可以解析.解释并返回JavaScript的对象和数组. ECMAScript 5对解析JSON的行为进行了规范,定义了全局对象JSON. JSON对象有两个方法:stringify()和parse().在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript.例如: 新建一个HTML
-
jQuery实现form表单元素序列化为json对象的方法
本文实例讲述了jQuery实现form表单元素序列化为json对象的方法.分享给大家供大家参考,具体如下: 这段代码序列化form表单元素为json对象: <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml> <head> <title>jQuery扩展--form序列化到json对象</title> <meta http-equiv=Content-Type content=&
-
Json序列化和反序列化方法解析
复制代码 代码如下: /// <summary> /// Json序列化,用于发送到客户端 /// </summary> public static string ToJsJson(this object item) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType()); using (MemoryStr
-
GSON实现Java对象的JSON序列化与反序列化的实例教程
从GitHub下载GSON:https://github.com/google/gson Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类别以及其成员才能成功的将JSON字符串成功转换成相对应的对象. class Examples { private int answer1 = 100; private String answer2 = "Hello world!"; Examples(){ } // default const
-
基于jQuery的一个扩展form序列化到json对象
复制代码 代码如下: $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [ o[this.name] ]; } o[this.name].push(this.value || ''); } else { o[this.nam
-
java对象序列化与反序列化的默认格式和json格式使用示例
默认格式 复制代码 代码如下: public class MyClass implements Serializable{...} 序列化: 复制代码 代码如下: ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(outputPath)); output.writeObject(myObject); 反序列化: 复制代码 代码如下: ObjectInputStream input = new Objec
-
jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: 复制代码 代码如下: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try { servletResponse.setContentType("text/plain;charset=UTF-8"); pw = servletResponse.getWrit
-
js解析与序列化json数据(三)json的解析探讨
这一节我们主要讨论json的解析. JSON.parse()方法也可以接收另一个参数,该参数是一个函数,将早每个键值对上调用.为了区别JSON.stringify()接收的替换(过滤)函数(replacer),这个函数被称作还原函数(reviver),但实际上这两个函数的签名是相同的--它们都接收连个参数,一个键和一个值,而且都需要返回一个值. 如果还原函数返回undefined,则表示要从结果中删除相应的键:如果返回其他值,则将该值插入到结果中.如: 复制代码 代码如下: <html> &l
-
JavaScript 序列化对象实现代码
作者发的是一张图,大家可以放大看. 前些天说过关于JavaScript的Literal Syntax问题,觉得挺有意思的,于是又研究了一下,能不能把对象再转化为Literal形式呢?就像我们平时说的序列化和反序列化啥的.当然可以了,因为JavaScript对象自身都提供了一个toString()方法,默认就是返回简单对象的Literal形式. 我们需要作的就是判断对象的具体类型,然后分别Serialize每种对象,再输出为Object的Literal语法形式就行了.准确的判断对象类型,使用我曾经
-
浅析JSON序列化与反序列化
方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化序列化类:Personnel 复制代码 代码如下: public class Personnel { public int Id { get; set; } public string Name { get; set; } } 执行序列化反序列化: 复制代码 代码如下: prote
-
js解析与序列化json数据(二)序列化探讨
上一节我们讲解了JSON.stringify()的基本用法,这一节我们来重点探讨一下序列化. JSON.stringify()除了要序列化的js对象外,还可以接收另外两个参数,这两个参数用于指定不同方式序列化js对象.第一个参数是过滤器,可以使一个数组,也可以是一个函数:第二个参数是一个选项,表示是否在JSON字符串中保留缩进.单独或组合使用这两个参数,可以更全面深入地控制JSON的序列化. 1.过滤结果 如果过滤器参数是数组,那么JSON.stringify()的结果中将只包含数组中列出的属性
随机推荐
- MySQL的mysqldump工具用法详解
- ExtJS 2.0 实用简明教程之布局概述
- 将angular.js项目整合到.net mvc中的方法详解
- 浅谈Javascript数组索引
- 在windows下给新硬盘分区图解_图解硬盘分区
- CentOS 中Nginx的安装方法
- javascript获取重复次数最多的字符
- 基于C#实现的HOOK键盘钩子实例代码
- Android编程开发实现带进度条和百分比的多线程下载
- MySQL绿色版(zip解压版)的安装图文教程(mysql-5.6.22-win32.zip)
- 分享经典的JavaScript开发技巧
- 简单的SQL Server备份脚本代码
- jquery load事件(callback/data)使用方法及注意事项
- C#微信开发之微信公众号标签管理功能
- 汇编语言常见错误信息中文注解
- 对一个数组进行zig-zag重新排列
- C++输入输出操作符重载的深入分析
- python kmeans聚类简单介绍和实现代码
- 基于vue中解决v-for使用报红并出现警告的问题
- mysql视图功能与用法实例分析