- 浏览: 448642 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
ubuntu的疯狂:
推荐一份完整的教程:http://blog.ddlisting ...
Emberjs学习 -
ptz19:
请问,如果把合并前的文件,不要dest 目标目录来。如: js ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
楼主,还有个问题,<a href="" ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
感谢楼主,用到了您的代码, 但现在好像有改动 否则会报错:修改 ...
gulp下静态资源的合并、压缩、MD5后缀 -
denverj:
感谢分享~
Emberjs学习
window.JSON 对象,处理JSON对象与字符串之间的转化。
浏览器支持:IE8+, Firefox 3.5+, Safari 4+, Chrome, and Opera 10.5+.
跨浏览器的解决方案,可以引用第三方库json2.js :https://github.com/douglascrockford/JSON-js
JSON.stringify(value[, replacer [, space]]) —— 把数据对象转化为字符串。
注意: 1)默认跳过函数; 2)Date 类型将自动转为字符串。
参数介绍:
value: 被序列号的对象;对象可以自定义 toJSON() 方法,更改序列化结果。
replacer: 对象序列化调用的函数;数字或字符串的数组,指定对象中需要被序列号的属性。
当replacer是一个函数时候,它的返回值将影响对象属性的序列化结果:
1) 返回 undefined ,对象的该属性将被删除;
2)返回一个 Object 对象,该 Object 对象将自动被递归序列化;
注意:
改返回对象不能自定义toJSON方法, 否则将导致浏览器崩溃!!!
space: 数字或字符串,为了可读效果,对序列化的字符串插入N个空白或一个特定字符。
注意:
如果自定义了字符,就没办法重新用parse()解析回对象了。
// 例子1: var obj = { "a": 100, "b": 'jack', "c": "www\"kk\"www", "say": function(){alert("hello")}, "d": [1,2,3], "e": {"e1":"hwow"}, "f": true, "g": new Date() }; var str = JSON.stringify(obj); // -- output -- {"a":100,"b":"jack","c":"www\"kk\"www","d":[1,2,3],"e":{"e1":"hwow"}, "f":true,"g":"2012-08-21T02:33:22.969"} // 例子2: function censor(key, value) { switch(key){ case "foundation": return {"Company":value,"Modifier": "Shawn"}; case "model": return undefined; case "week" : return 30; // DONT'T DO THIS。IE下报堆栈溢出错误,Firefox直接就崩溃了。 // case "transport": return {"transport":value,"toJSON": function(){return "UNKNOW";}}; default: return value; } } var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7}; var jsonString = JSON.stringify(foo, censor,"~"); console.log(jsonString); // --- output ---- { ~"foundation": { ~~"Company": "Mozilla", ~~"Modifier": "Shawn" ~}, ~"week": 30, ~"transport": "car", ~"month": 7 }
JSON.parse(value[, replacer]) —— 将字符串化的对象还原。
参数介绍:
value:被还原的对象字符串;
replacer: 函数,对象还原调用。它的返回值将影响对象结果。如果返回 undefined ,对象的该属性将被删除;
var book = { "name" : "程序设计", "pubDate": new Date(2010,1,1), "releaseDate" : new Date(2009,10,10), "price" : 199 } var jsonText = JSON.stringify(book); console.log(jsonText); // {"name":"程序设计","pubDate":"2010-01-31T16:00:00.000Z", "releaseDate":"2009-11-09T16:00:00.000Z","price":199} var bookCopy = JSON.parse(jsonText,function(key, value){ if(key === "pubDate"){ return new Date(value); }else if(key === "price"){ return undefined; } return value; }); console.log(typeof bookCopy.price); // undefined 已经被删除了 console.log(typeof bookCopy.pubDate); // object Date类型 console.log(typeof bookCopy.releaseDate); // string 默认仍然是字符串
注意:使用stringify 方法将对象串行化,则应该使用parse 方法还原。
这在本地存储的读取时候,容易犯错,出现bug:
比如:
var aStr = "hello"; var result = JSON.stringify(aStr); console.log(result); // "hello" 注意:这里前后多了2个双引号 console.log(result === aStr); // false var aStr2 = JSON.parse(result); //使用parse()方法还原 console.log(aStr === aStr2); // true
参考资料:
https://developer.mozilla.org/en-US/docs/Using_native_JSON
《JavaScript高级程序设计3》
发表评论
-
webpack简单打包PC网站前端资源
2016-02-23 14:30 1693:arrow: 1. 纯前端的打包输出,比较有局限 2 ... -
grunt构建基于seajs的网站实现
2015-06-16 16:49 1127Gruntfile.js module.exports ... -
js平滑滚动回到顶部
2015-06-10 11:42 4015优先使用 requestAnimationFrame实现。 实 ... -
fis-amd 的使用与修改
2015-05-26 16:14 3957https://github.com/fex-team/fis ... -
scrollMagic 视差与滚动动画GSAP
2015-05-19 18:14 4440scrollMagic(https://github.com/ ... -
skrollr-视差滚动动画插件
2015-05-19 14:18 1741skrollr ( https://github.com/Pr ... -
stellar插件的使用
2015-05-18 17:30 1787<!DOCTYPE html> < ... -
icon font VS svg font
2015-05-14 15:21 1211关于字体图标和SVG图标,CSS TRICK网站有较好的说明。 ... -
gulp下静态资源的合并、压缩、MD5后缀
2015-05-05 15:48 22631var gulp = require('gulp'); ... -
DOMContentLoaded VS onload VS onreadystatechange
2015-04-30 14:50 70081. DOMContentLoaded 在页面html、scr ... -
简单的css3全屏滚动
2015-04-27 16:41 1450<!DOCTYPE html> <ht ... -
jquery插件treetable 的使用
2015-04-20 16:12 11999插件的文档写得不是很好,为了能弄出异步加载的功能,小折腾了一番 ... -
sublime 侧边栏字体大小修改
2015-04-16 10:46 3834【转载自:http://jekhy.com ... -
移动端的“点透”问题
2015-04-15 14:13 1659移动端的“点透”问题,这篇博文有较好的说明: http://w ... -
scheme缺少,ie的bug
2015-04-01 17:34 532在页面上定位一个资源(JS/CSS/image),通常的url ... -
大整数相加
2015-03-26 22:18 936function repeatStr(ch, n){ ... -
getBoundingClientRect 跨浏览器实现
2015-03-18 18:30 1106<head> <script ... -
window.name 跨域
2015-03-18 17:29 898window.name跨域的基础是:iframe页面在其url ... -
window.name 跨域
2015-03-18 17:27 1window.name跨域的基础是:iframe页面在其ur ... -
HTML History API
2015-03-13 18:05 1132// 替换当前浏览器history的最后一项记录。 hi ...
相关推荐
JSON序列化是将数据对象转化为JSON字符串的过程,而反序列化则是将JSON字符串还原为数据对象。在C#中,处理JSON序列化和反序列化有多种方法,本篇文章将深入探讨这一主题。 1. .NET框架内置支持 .NET Framework ...
Json.NET是.NET开发中广泛使用的第三方库,由James Newton-King 开发,它提供了一套高效且功能丰富的JSON序列化和反序列化的解决方案。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web...
在编程中,我们经常需要将JSON对象转换为编程语言中的数据结构(如Java对象、C#类等),这个过程称为序列化;反之,将编程语言中的数据结构转换回JSON字符串则称为反序列化。 **一、Json序列化** 序列化是将数据...
在C#中,处理JSON格式的序列化和反序列化是开发过程中的常见任务,这涉及到将C#对象转换为JSON字符串,以及将JSON字符串还原为C#对象。本文将详细介绍C#中几种常用的JSON处理方法。 一、Newtonsoft.Json库(Json...
JSON库如json-lib为Java提供了序列化和反序列化的能力,即将Java对象转换为JSON字符串,以及将JSON字符串还原为Java对象。以下是关于使用json-lib进行JSON序列化和反序列化的详细说明: 1. **JSON对象的序列化** ...
Objective-C的实体类对象序列化和反序列化是数据处理的关键环节,它涉及到如何将内存中的对象转换为可存储或传输的数据格式,如JSON(JavaScript Object Notation),以及如何将接收到的JSON数据还原为对象。JSON因...
在.NET Framework中,序列化主要分为XML序列化和JSON序列化。JSON序列化通常用于Web服务或Web应用的数据交换。 **反序列化**则是指将序列化的数据恢复为对象的过程。在.NET Framework中,反序列化可以将JSON格式的...
序列化是指将对象的状态转换为可存储或传输的形式,而反序列化则是将这种形式还原为对象。在C++中,有多种库可以用来实现Json的序列化和反序列化,如nlohmann/json、jsoncpp、RapidJSON等。这里我们主要讨论nlohmann...
在C#编程中,JSON(JavaScript Object Notation)序列化和反序列化是常见的数据转换技术,用于在应用程序之间交换数据。JSON是一种轻量级、易于读写的数据格式,广泛应用于Web服务和客户端之间的通信。本篇文章将...
C#作为.NET框架的一部分,提供了内置支持JSON序列化和反序列化的工具,使得对象和JSON字符串之间的转换变得简单易行。在本项目中,我们将深入探讨如何使用C#进行JSON的正反序列化。 在C#中,`System.Text.Json`命名...
C#中的JSON序列化和反序列化是将C#对象转换为JSON字符串,以及将JSON字符串还原为C#对象的过程,这对于网络通信和数据存储至关重要。下面我们将详细探讨C#中如何进行JSON序列化应用。 首先,要进行JSON操作,你需要...
在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许我们将对象的状态转化为可存储或可传输的数据格式,例如XML、JSON或二进制,以便于保存、恢复或者在网络间传递。而“压缩流”则涉及到数据的压缩和解...
在Java编程语言中,对象的序列化和反序列化是两个关键的概念,它们对于数据存储、网络传输以及持久化有着重要的作用。这篇文章将深入探讨这两个主题,并通过实践例子来阐述其工作原理。 **序列化(Serialization)*...
C#对象序列化是.NET开发中必不可少的一个部分,它提供了保存和还原对象状态的能力,简化了数据交换和持久化操作。`BinaryFormatter`和`JsonSerializer`是主要的序列化工具,它们各有优缺点,适用于不同的场景。理解...
序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景下都非常有用,比如在网络传输、存储到磁盘或数据库、以及实现跨进程通信时。 首先,我们需要了解`...
序列化是指将对象转换为可以传输或存储的数据格式,对于JSON,这意味着将对象转换成JSON字符串。在iOS中,我们可以使用`NSJSONSerialization`类来完成这一过程。 #### 1. Objective-C ```objc // 定义一个实体类 @...
最后,二进制序列化是另一种高效的序列化方式,它将对象直接转换为二进制数据,节省存储空间,但可能不如XML和JSON那么易于理解和跨平台。C#中的BinaryFormatter类负责二进制序列化和反序列化,但需要注意的是,由于...