JSON与js对象序列化
JavaScript对象表示法(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,它基于js字面量表示法,是js的一个子集。虽然是一个js的子集但是他与语言无关,它可以用于在现在所有的编程语言编写的应用程序之间进行数据交换。是一种文本格式,比较容易读写。
JSON是一个容纳“名/值”对的无序集合,名字可以是任意字符串,值可以使任意的JSON类型的值。大多数编程语言都有被映射为JSON的数据类型,比 如对象(object),字典(dictionary),哈希表(hash map),关联数组(associative array)等。
console.log(JSON.parse('5')); // 5console.log(JSON.parse(5)); // 5 console.log(JSON.parse('true')); // trueconsole.log(JSON.parse(true)); // true console.log(JSON.parse('"hello"')); // "hello"console.log(JSON.parse("hello")); // 报错 因为hello不是JSON字符串 console.log(JSON.parse('null')); // nullconsole.log(JSON.parse(null)); // null console.log(JSON.parse(undefined)); // 报错 因为JSON不能表示undefined换用null代替
JSON的结构
{key1:value1,key2:value2,... }
例如:
{"name": "hum","age": 26,"sex": 1,"love": ["swing","jump"],"birthday": "1988-01-12" }
NOTE:
在js中表示JSON字符串时最好在外面加上单引号。
如下:
console.log(JSON.parse('{"num":5,"stop":true,"str":"hello","empty":null}'));// object{num:5,stop:true,str:"hello",empty: null}
与js对象字面量相比,JSON对象没有变量声明也没有末尾的分号。
数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。
[{key1:value1,key2:value2,...} ]
例如:
[ { "Id": 7, "Mentions": [ { "Id": 5, "StatusId": 34, "CreatedDateTime":"\/Date(1310051914617+0100)\/", "Text":"Text", "UserName":"Username", "UserLocation":"UK", "UserLanguage":"en-GB", "IsCheckIn":"true" } ], "Checkins": 0, "HereNow": 0, "TimeStamp":"\/Date(1310051914639+0100)\/", "Venue": { "Id": 7, "FoursquareId":"cacbf3bd-f0aa-403d-9f9b-2056b4985ba1", "Name":"Venue Name" } },{"name":"hahahhahah","port":[{"port": 8080,"protocol":"HTTP","IP":"123.12.06.456"} ]} ]
JSON数组采用的是javascript数组字面量的形式。
JSON的解析与序列化
JSON.stringify
var oJson = { name: 'hum', age: 20, sex: 1}; console.log(JSON.stringify(oJson, ['age', 'sex'])); // {"age":20,"sex":1}
var oJson = { name: 'hum', age: 26, sex: 1, love: ['swing', 'jump']};console.log(JSON.stringify(oJson, function(k, v){switch (k){case 'age':return v > 20 ? '成年': '未成年';case 'love':return v.join(',');case 'sex':return undefined;default :return v;}})); // {"name":"hum","age":"成年","love":"swing,jump"}
如果该参数是函数,则它是一个替换函数,该函数会在每一个需要字符串化的对象上调用。这个函数的第一个参数是该对象中的属性名或数组的序号,第二个则是值本身。函数的返回值会替换掉需要字符串化的值,如果函数返回undefined或没有任何的返回值,则会在字符串化的时候忽略这个值。
stringify的第三个参数的实例:
var oJson = { name: 'hum', age: 26, sex: 1, love: ['swing', 'jump']};console.log(JSON.stringify(oJson, null, 4));/*{"name": "hum","age": 26,"sex": 1,"love": ["swing","jump"]}*/
var oJson = { name: 'hum', age: 26, sex: 1, love: ['swing', 'jump']};console.log(JSON.stringify(oJson, null, '--'));/*{--"name": "hum",--"age": 26,--"sex": 1,--"love": [----"swing",----"jump"--]} */
这样就很容易理解了。。。
JSON.parse
var oJson = { name: 'hum', age: 26, sex: 1, love: ['swing', 'jump'], birthday: '1988-01-12'};var sJson = JSON.stringify(oJson);console.log(sJson);//{"name":"hum","age":26,"sex":1,"love":["swing","jump"],"birthday":"1988-01-12"} console.log(JSON.parse(sJson));console.log(JSON.parse(sJson, function (k, v) {if(k == 'birthday'){ // 返回日期对象return new Date(v);}else if(k == 'sex'){ // sex不在了return undefined;}else{return v;}}));
转载于:https://www.cnblogs.com/duhuo/p/4526538.html
JSON与js对象序列化相关推荐
- JSON 和 JS 对象互转
JSON 和 JS 对象互转 要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: var json = JSON.stringify({a: 'Hello', b: ...
- JSON转换为JS对象和JS对象转换为JSON
1. JSON转换为JS对象 名称 parse 类型 执行类 参数 json: string JSON字符串 返回值 js对象 示例 parse('{"a":"abc&q ...
- JSON转JS对象,JS对象转JSON
JSON转JS对象,JS对象转JSON </h1><div class="clear"></div><div class="po ...
- Javascript学习笔记——JSON:js对象简谱
Javascript不仅是一种编程语言,还被作为一种常用的对象存储和传输格式 JSON:JS 对象简谱 JSON(JavaScript Object Notation)即Javascript对象简谱 ...
- json和JS对象转换
json语法格式: 对象表示为键值对 数据由逗号分隔 花括号保存对象 方括号保存数据 JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串. var obj = {a: ...
- JSON 与 JS 对象的区别
JSON 概述 JSON(JavaScript Object Notation),JS 对象表示法. JSON 是 JS 对象的一种描述方式,使 JS 对象能够以文本的方式记录下来,所以 JSON 是 ...
- JSON与JS对象的区别
和一些同学一样:总是感觉json对象(其实json不是对象)和js对象的字面量表示法相同,最近学习json,真心搞不懂,js对象和json有什么区别?就是感觉json的key要用" &quo ...
- 将JS对象转换为JSON |将JSON转换为JS对象
一.将JSON字符串为JS对象 在JS中,如果直接输入 var arr = {arr:[1,2,3]}; 返回的是一个object对象 因此如果我们需要将其转换为JSON,可以用如下方式进行转换 va ...
- JSON和JS对象之间的互转
1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2. 浏览器支持的 ...
最新文章
- iis上实现虚拟目录
- oracle 关闭audit,关于Oracle审计(audit)
- mootools1.3.1源码解读
- [数学笔记Mathematical Notes]2-一个带对数的积分不等式
- ServiceComb开放性设计
- 如何为编程爱好者设计一款好玩的智能硬件(三)——该选什么样的MCU呢?
- spi flash驱动
- springboot配置文件加载顺序_「SpringBoot系列」配置文件加载优先级解析
- Android新的menu实现——ActionMode
- (@WhiteTaken)设计模式学习——代理模式
- 树分解 宽度 如何分解 算法
- 58技术主席孙玄:硬核揭秘万亿级微服务分布式事务实战!
- Android ADB 环境变量配置
- 输入输出文件处理:搜索文件夹里的文件与读取某一文件的信息 ——java
- 下载CSS参考手册之后打开却无法显示
- 2020年(农历庚子鼠年)春联大全(收藏必备)
- 阅读高效能人士七个习惯
- 17.安全点与安全区
- 林光常颠覆传统的养生观 ,养生必读
- z变换判断稳定性和因果性_信号与系统(奥本海姆)