JSON简介以及用法汇总,JS中JSON对象和字符串之间的互动转换

JSON简介以及用法汇总

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

原稿出处:
韩非迟的博客   

JSON简介以及用法汇总

什么是JSON?

 

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

 

  JSON是一种轻量级的数据互换格式,某个JSON格式的公文之中譬如可以长成那样:

 

 

{

  “name”: “hanzichi”,

  “sex”: “male”

}

  看起来都是key-value的键值对,很像js的对象呢?没错,但与此同时JSON表示不服,我无法跟js的靶子长成一样啊,我得有我要好的天性,于是规定键-值对中的键必须用双引号!同时规定键-值对中的值的取值有早晚须要:

 

JSON 值可以是:

 

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true 或 false)

数组(在方括号中)

JSON简介以及用法汇总,JS中JSON对象和字符串之间的互动转换。目的(在花括号中)

null

  除以上6种外,再无任何,没有像js一样的undefined、NAN,JSON拒绝使用。

 

何以采纳JSON?

 

  JSON一般以字符串的花样在数额交互进度中游走,so对于js而言,怎么样将json字符串和js对象时期开展交互转换显得尤其关键。

 

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

 

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对象)

 

var jsonStr = ‘{“name”: “hanzichi”, “sex”: “male”}’;

var obj = JSON.parse(jsonStr);

console.log(typeof obj, obj); // object Object {name: “hanzichi”, sex:
“male”}

  首个参数可以是函数,可以对值举行删改:

 

 

 

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

 

var obj = {name: ‘hanzichi’, sex: ‘male’, age: ’10’};

var jsonStr = JSON.stringify(obj);

console.log(jsonStr);  // {“name”:”hanzichi”,”sex”:”male”,”age”:”10″}

  也得以加个参数,规定亟待转接为json字符串的习性(数组方式,跟数组同名的js对象属性才会被撤换):

 

 

var obj = {name: ‘hanzichi’, sex: ‘male’, age: ’10’};

var jsonStr = JSON.stringify(obj, [‘name’]);

console.log(jsonStr);  // {“name”:”hanzichi”}

  第二个参数也足以是个函数,可以删选符合条件的属性(或者变更属性值,没有return表示摒弃该属性,return的值表示该key在json字符串中的值)

 

 

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

 

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:

 

 

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”

// }

  那里我有个疑问,我以为输出应该是之类方式才对啊…

 

 

{

“prename”: “hanzichi”,

“presex”: “male”,

“preage”: “10”

}

  麻烦有知情的大大能倾情告诉我…

 

 总结

 

  当然神话中的ie8(及以下)因为某种缺陷不能够动用JSON.parse()以及JSON.stringify()方法,而eval()又展现不安全,假设要合营它们的话可以引用json2.js。

什么是JSON? JavaScript
对象表示法(JavaScript Object Notation)。
JSON是一种轻量级的数据沟通格式,某个JSON格式的文件内…

什么是JSON?

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

JSON是一种轻量级的数据互换格式,某个JSON格式的文书之中譬如可以长成那样:

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

看起来都是key-value的键值对,很像js的对象呢?没错,但与此同时JSON表示不服,我不可能跟js的靶子长成一样啊,我得有我要好的天性,于是规定键-值对中的键务必用双引号!同时确定键-值对中的值的取值有一定必要:

JSON 值能够是:

  1. 数字(整数或浮点数)
  2. 字符串(在双引号中
  3. 逻辑值(true 或 false)
  4. 数组(在方括号中)
  5. 目标(在花括号中)
  6. null

除上述6种外,再无任何,没有像js一样的undefined、NAN,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. 数组(在方括号中)
  5. 目标(在花括号中)
  6. null

除以上6种外,再无其余,没有像js一样的undefined、NAN,JSON拒绝利用。

何以运用JSON?

JSON一般以字符串的样式在数量交互进程中游走,so对于js而言,怎么样将json字符串和js对象时期举办交互转换显得愈加重大。

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

    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对象)

    var jsonStr = ‘{“name”: “hanzichi”, “sex”: “male”}’; var obj = JSON.parse(jsonStr); console.log(typeof obj, obj); // object Object {name: “hanzichi”, sex: “male”}

其次个参数可以是函数,可以对值举办删改:

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

    var obj = {name: ‘hanzichi’, sex: ‘male’, age: ’10’}; var jsonStr = JSON.stringify(obj); console.log(jsonStr); // {“name”:”hanzichi”,”sex”:”male”,”age”:”10″}

也足以加个参数,规定亟待转接为json字符串的性能(数组方式,跟数组同名的js对象属性才会被转换):

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

第四个参数也可以是个函数,可以删选符合条件的性能(或者变更属性值,没有return表示甩掉该属性,return的值表示该key在json字符串中的值)

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拍卖。

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:

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

此地自己有个问号,我认为输出应该是之类格局才对啊…

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

劳动有掌握的大大能倾情告诉我…

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

怎么着行使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"}

第三个参数也可以是个函数,能够删选符合条件的性能(或者变更属性值,没有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"
}

劳动有掌握的大大能倾情告诉我…

总结

自然神话中的ie8(及以下)因为某种缺陷无法使用JSON.parse()以及JSON.stringify()方法,而eval()又展现不安全,假如要协作它们的话可以引用json2.js。

 

来源

结果:string

 总结

当然神话中的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”}

结果: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>

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

1.JSON.parse;

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

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

text 必选。 一个立竿见影的 JSON 字符串。

reviver 可选。 一个转移结果的函数。 将为目的的各样成员调用此函数。

返回值:JSON对象

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

2.JSON.stringify

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

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

value 必选 经常为对象或数组

重临值:JSON 包蕴的文本字符串。

实例:

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

网站地图xml地图