JSON简介以及用法汇总
SON简介以及用法汇总
什么是JSON?
JavaScript 对象表示法(JavaScript Object Notation)。
JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样:
1
2
3
4
|
{
"name" : "hanzichi" ,
"sex" : "male"
}
|
看起来都是key-value的键值对,很像js的对象吧?没错,但同时JSON表示不服,我不能跟js的对象长成一样啊,我得有我自己的个性,于是规定键-值对中的键必须用双引号!同时规定键-值对中的值的取值有一定要求:
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
除以上6种外,再无其他,没有像js一样的undefined、NAN,JSON拒绝使用。
如何使用JSON?
JSON一般以字符串的形式在数据交互过程中游走,so对于js而言,如何将json字符串和js对象之间进行相互转换显得尤为重要。
- eval大法(json字符串 -> js对象)
1
2
3
|
var jsonStr = '{"name": "hanzichi", "sex": "male"}' ;
var ans = eval( '(' + jsonStr + ')' );
console.log(ans.name, ans.sex); // hanzichi male
|
eval 函数非常快,但是它可以编译任何 javascirpt 代码,这样的话就可能产生安全的问题。eval 的使用是基于传入的代码参数是可靠的假设下,有一些情况下,可能客户端是不可信任的。如果基于安全的考虑的话,最好是使用一个JSON解析器,一个JSON 解析器将只接受JSON文本,所以是更安全的,如下。
- JSON.parse(json字符串 -> js对象)
1
2
3
|
var jsonStr = '{"name": "hanzichi", "sex": "male"}' ;
var obj = JSON.parse(jsonStr);
console.log( typeof obj, obj); // object Object {name: "hanzichi", sex: "male"}
|
第二个参数可以是函数,可以对值进行删改:
1
2
3
4
5
6
7
8
|
var jsonStr = '{"name": "hanzichi", "sex": "male", "age": 10}' ;
var obj = JSON.parse(jsonStr, function (key, value) {
if (key === 'name' ) {
return 'my name is ' + value;
}
return value;
});
console.log( typeof obj, obj); // object Object {name: "my name is hanzichi", sex: "male", age: 10}
|
- JSON.stringify(js对象 -> json字符串)
1
2
3
|
var obj = {name: 'hanzichi' , sex: 'male' , age: '10' };
var jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"hanzichi","sex":"male","age":"10"}
|
也可以加个参数,规定需要转化为json字符串的属性(数组形式,跟数组同名的js对象属性才会被转换):
1
2
3
|
var obj = {name: 'hanzichi' , sex: 'male' , age: '10' };
var jsonStr = JSON.stringify(obj, [ 'name' ]);
console.log(jsonStr); // {"name":"hanzichi"}
|
第二个参数也可以是个函数,可以删选符合条件的属性(或者改变属性值,没有return表示放弃该属性,return的值表示该key在json字符串中的值)
1
2
3
4
5
6
7
8
|
var obj = {name: 'hanzichi' , sex: 'male' , age: '10' };
var jsonStr = JSON.stringify(obj, function (key, value) {
if (key === 'name' ) {
return 'my name is ' + value;
}
return value;
});
console.log(jsonStr); // {"name":"my name is hanzichi","sex":"male","age":"10"}
|
还可以有第三个参数,可以是数字或者字符串。
如果是数字的话,表示缩进,数字大小超过10了按10处理。
1
2
3
4
5
6
7
8
|
var obj = {name: 'hanzichi' , sex: 'male' , age: '10' };
var jsonStr = JSON.stringify(obj, null , 4);
console.log(jsonStr);
// {
// "name": "hanzichi",
// "sex": "male",
// "age": "10"
// }
|
也可以是字符串,会在属性前加上这些字符串充当前缀,同样字符串长度超过10只截取10:
1
2
3
4
5
6
7
8
|
var obj = {name: 'hanzichi' , sex: 'male' , age: '10' };
var jsonStr = JSON.stringify(obj, null , 'pre' );
console.log(jsonStr);
// {
// pre"name": "hanzichi",
// pre"sex": "male",
// pre"age": "10"
// }
|
这里我有个疑问,我觉得输出应该是如下形式才对啊...
1
2
3
4
5
|
{
"prename" : "hanzichi" ,
"presex" : "male" ,
"preage" : "10"
}
|
麻烦有知道的大大能倾情告诉我...
总结
当然传说中的ie8(及以下)因为某种缺陷不能使用JSON.parse()以及JSON.stringify()方法,而eval()又显得不安全,如果要兼容它们的话可以引用json2.js。
转载于:https://www.cnblogs.com/ChineseMoonGod/p/5092039.html
JSON简介以及用法汇总相关推荐
- linux 中ans 用法,JSON简介以及用法汇总
什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样: 看起来都 ...
- pythonjson中list操作_python3中json与JsonPath用法详解
一.JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场 ...
- C++ nlohmann/json 的主要用法
文章目录 前言 准备工作 引用头文件: 主要用法: 一.声明与构造 1 纯粹声明 2 内容构造 二.解析与序列化 字符串 解析 序列化 文件:// 比如有文件 c:\rankings.json,其内容 ...
- 【Qt】Qt中JSON简介
00. 目录 文章目录 00. 目录 01. JSON简介 02. JSON Support in Qt 03. JSON类 04. 附录 01. JSON简介 1.1 JSON概述 JSON(Jav ...
- C# JSON格式数据用法
JSON简介 JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集.JSON采用完全独立于语言的文本格式,可 ...
- JSON简介,语法,在html中应用
JSON简介 1,json(JavaScript Object Notation)是一种轻量级的文本数据交换格式而非编程语言, 其语法只支持字符串,数值,布尔值及null以及在次基础上的对象和数组. ...
- left join 和join区别_sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...
- c++中的fork函数_linux c语言 fork() 和 exec 函数的简介和用法
linux c语言 fork() 和 exec 函数的简介和用法 假如我们在编写1个c程序时想调用1个shell脚本或者执行1段 bash shell命令, 应该如何实现呢? 其实在<stdli ...
- Android系统 (190)---Android:JSON 简介 amp; 解析方式 讲解(Gson、AS自带org.json、Jackson)
Android:JSON 简介 & 解析方式 讲解(Gson.AS自带org.json.Jackson) 前言 现今最主流的数据交换格式 非 JSON莫属 今天,我将全面介绍 JSON &am ...
最新文章
- unity课设小游戏_Unity制作20个迷你小游戏实例训练视频教程
- erlang: Programming Rules and Conventions。
- sts无法创建java_java – STS无法在我的机器上启动
- 渣男一般的产品经理长什么样?管过几百产品之后,谈谈如何做好这一行
- 官方的正则表达式组件 RegularExpressions (4) : 表达式选项
- 牛客网【每日一题】4月22日 K-th Number
- 排序算法一:冒泡排序,插入排序以及选择排序原理与MATLAB实现
- 【JS复习笔记】00 序
- android image设置adjustviewbounds_探索 Android 平台的 CameraX
- linux环型共享内存,Linux system v 共享内存
- linux 线程_Linux 多线程编程(不限Linux)
- IOS推送消息怎么实现icon图标的数字累加
- stl2xml.py 代码实现了stl格式转化为xml格式
- css学习_css书写规范
- Linux命令之乐--iconv
- 阿里巴巴开源前端框架--Weex实践
- sqlite3 API详解
- 微信小程序button修改边框样式after
- 公众号滑动图代码_微信公众号文章滑动图片怎么做的呢?
- unity3d:粒子随摄像机远近有大小变化bug