同时也易于机器解析和生成,JSON.stringify(obj)将

JSON简单介绍以至用法汇总

2015/03/26 · JavaScript · 1 评论 · JSON

原作出处: 韩非子迟的博客   

JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;

大家好~  小编是生机勃勃枚正直纯洁的苦逼工程师!!!!!

什么是JSON?

JavaScript 对象表示法(JavaScript Object Notation)。

JSON是风流罗曼蒂克种轻量级的数据沟通格式,有个别JSON格式的文书之中比如能够长成那样:

JavaScript

{ "name": "hanzichi", "sex": "male" }

1
2
3
4
{
  "name": "hanzichi",
  "sex": "male"
}

看起来都以key-value的键值对,很像js的靶子啊?没有错,但还要JSON表示不性格很顽强在艰难险阻或巨大压力面前不屈,小编无法跟js的对象长成同样啊,作者得有笔者自身的秉性,于是规定键-值对中的键必需用双引号!同期明确键-值对中的值的取值有早晚需要:

JSON 值能够是:

  1. 数字(整数或浮点数卡塔尔
  2. 字符串(在双引号中
  3. 逻辑值(true 或 false)
  4. 数组(在方括号中卡塔 尔(英语:State of Qatar)
  5. 对象(在花括号中)
  6. null

除上述6种外,再无其余,未有像js同样的undefined、NAN,JSON推却使用。

var a={"name":"tom","sex":"男","age":"24"};
var aToStr = JSON.stringify(a);
alert(aToStr); //结果:{"name":"tom","sex":"男","age":"24"}

1.背景介绍

哪些行使JSON?

JSON日常以字符串的形式在数码交互作用进程上游走,so对于js而言,怎么着将json字符串和js对象时期张开相互影响转变显得更加的关键。

  • eval大法(json字符串 -> js对象)

JavaScript

var jsonStr = '{"name": "hanzichi", "sex": "male"}'; var ans = eval('('

  • jsonStr + ')'); console.log(ans.name, ans.sex); // hanzichi male
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对象)

JavaScript

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
var jsonStr = '{"name": "hanzichi", "sex": "male"}';
var obj = JSON.parse(jsonStr);
console.log(typeof obj, obj); // object Object {name: "hanzichi", sex: "male"}

第二个参数能够是函数,能够对值举办删改:

JavaScript

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}

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字符串)

JavaScript

var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj); console.log(jsonStr); // {"name":"hanzichi","sex":"male","age":"10"}

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对象属性才会被改动卡塔尔:

JavaScript

var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, ['name']); console.log(jsonStr); // {"name":"hanzichi"}

1
2
3
var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, ['name']);
console.log(jsonStr);  // {"name":"hanzichi"}

第2个参数也能够是个函数,能够删选切合条件的天性(大概退换属性值,未有return表示废弃该属性,return的值表示该key在json字符串中的值卡塔 尔(阿拉伯语:قطر‎

JavaScript

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"}

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处理。

JavaScript

var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, null, 4); console.log(jsonStr); // { // "name": "hanzichi", // "sex": "male", // "age": "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:

JavaScript

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
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"
// }

这里笔者有个难点,小编感到输出应该是之类情势才对啊…

JavaScript

{ "prename": "hanzichi", "presex": "male", "preage": "10" }

1
2
3
4
5
{
"prename": "hanzichi",
"presex": "male",
"preage": "10"
}

劳碌有知情的大大能倾情告诉作者…

结果:string

什么是JSON

 总结

理所必然传说中的ie8(及以下卡塔尔国因为某种缺欠不能够使用JSON.parse()以致JSON.stringify()方法,而eval()又显得不安全,要是要合营它们的话能够援用json2.js。

1 赞 1 收藏 1 评论

图片 1

var b='{"name":"tom","sex":"男","age":"24"}';
var aToObj = JSON.parse(b);
console.log(aToObj); //结果:Object {name: "tom", sex: "男", age: "24"}

JSON (JavaScript Object Notation, JS 对象标识) 是风流倜傥种轻量级的数据交流格式。它依照 ECMAScript (w3c制定的js规范)的三个子集,采纳完全部独用立于编程语言的文本格式来囤积和象征数据。简洁和清晰的档次结构使得 JSON 成为能够的数据沟通语言。 易于人读书和编辑,同一时间也易于机器深入解析和转换,并有效地晋级互连网传输效能。

结果:object

——百度百科

ie8(兼容情势),ie7和ie6未有JSON对象,不过http://www.json.org/提供了三个json.js,那样ie8(包容情势),ie7和ie6就足以支撑JSON对象以至其stringify()和parse()方法;

数量传输是大家在敲代码时,平时蒙受的一个场馆,前后端人机联作。给多少叁个联合的格式有助于大家编辑和分析数据。

在页面中增多就会解决IE低版本未有json对象的标题。
<script type="text/javascript" src="js/json2.js"></script>

json,是风度翩翩种多少格式,在与后端的数目人机联作中有较为布满的使用。

PS: JSON的parse()和stringfy()方法

JSON的诞生

1.JSON.parse;

JSON是 (JavaScript Object Notation, JS 对象标识),它是豆蔻梢头种数据交换格式。在JSON现身早先,我们一贯用XML来传递数据。因为XML是风流罗曼蒂克种纯文本格式,所以它切合在互联网上调换数据。XML自身不算复杂,可是,加上DTD、XSD、XPath、XSLT等级一次全国代表大会堆复杂的科班未来,任何正规的软件开采人士境遇XML都会认为头大了,最终大家开采,即便你努力钻研多少个月,也不见得搞得清楚XML的正规。

意义:将JavaScript对象表示法的JSON字符串调换为对象(字符串转对象)

到底,在二零零二年的一天,DougRuss·克罗克Ford(DougRussCrockford卡塔尔国同学为了挽留深陷水深畅销相同的时候又被某多少个特大型软件集团长时间愚弄的软件程序猿,发明了JSON这种超级轻量级的数据调换格式。

语法:JSON.parse(text [, reviver])

出于JSON相当轻巧,非常快就风行Web世界,并且产生ECMA规范。差不离全体编制程序语言都有解析JSON的库,而在JavaScript中,我们得以平昔动用JSON,因为JavaScript内置了JSON的分析。把其它JavaScript对象造成JSON,便是把这么些目的体系化成八个JSON格式的字符串,那样才具够由此互连网传递给其余Computer。假如我们收起贰个JSON格式的字符串,只供给把它反种类化成一个JavaScript对象,就足以在JavaScript中平素动用这么些目的了。

text 必选。 多个有效的 JSON 字符串。

转义

reviver 可选。 二个转换结果的函数。 将为对象的各样成员调用此函数。

咱俩在调用 jsonp 接口只怕调用js文件的时候,由于文件编码不一样会导致出现乱码的难题。 若是您的文书现身了非英语字符,要是调用时文件编码不生机勃勃致,相似会身不由己乱码情状。

返回值:JSON对象

那也正是怎么要多少统少年老成格式的缘故。

实例:
var jsonStr = '{"name":"leinov","sex":"famle","address":"beijing"}';
var jsonObj = JSON.parse(jsonStr);
alert(typeof jsonObj); //Object

JSON 是适用于 Ajax 应用程序的生机勃勃种有效格式,原因是它使 JavaScript 对象和字符串值之间能够迅猛转移 JSON是生龙活虎种传递对象的语法

2.JSON.stringify

JSON是二个提供了stringify和parse方法的嵌入对象 

功效:将 JavaScript json对象转变为JavaScript对象表示法的JSON字符串(对象转为字符串)

stringify将js对象转化为切合json规范的字符串

语法:JSON.stringify(value [, replacer] [, space]);

parse将适合json标准的字符串转变为js对象

value 必选 平常为目的或数组

2.文化分析

再次来到值:JSON 包蕴的文本字符串。

JSON语法

实例:

数量在名称/值对中

var student = new Object();
student.name = "leinov";
student.sex = "famle";
student.address = "chaoyang";
var jsonStudent = JSON.stringify(student);
alert(typeof jsonStudent); //string

多少由逗号分隔

大括号保存对象

中括号保存数组

JSON值

数字(整数/浮点数)

字符串(双引号)

布尔值(true/false)

数组(中括号中)

指标(大括号中)

null

实例

JSON 数据的书写格式是:名称/值对。

名称/值对组合中的名称写在眼下(在双引号中卡塔尔,值对写在前面,中间用冒号隔绝,

里面 值 能够是:数字(整数或浮点数卡塔 尔(阿拉伯语:قطر‎、字符串(在双引号中卡塔尔、布尔值(true或false卡塔尔、数组(在方括号中卡塔 尔(英语:State of Qatar)、对象(在花括号中卡塔 尔(阿拉伯语:قطر‎、null

动用方法:

var json = {"password":123456,"name":"myname","Booleans":true,"Array":[1,2,3],"object":{}}

或许是嵌套使用

                      myObj = {

                          "name":"jnshu",

                          "alexa":10086,

                          "sites": {

                              "site1":"www.jnshu.com",

                              "site2":"m.jnshu.com",

                              "site3":"c.jnshu.com"

本文由必威发布于必威-前端,转载请注明出处:同时也易于机器解析和生成,JSON.stringify(obj)将

相关阅读