1、什么是json
一个对象是有若干个属性构成,这些属性没有顺序,在js中 可以使用{}来表示这个集合。json是一个直属与object的对象
2、js中语法{属性名:属性值,属性名:属性值,属性名:属性值…….}
3、定义一个json:
在定义json对象时,语法要求并不严格,也可以使用双引号或是单引号进行定义,它们表达的含义是相同的。
var p={name:'zhangsan',age:30,emial:'srdftyhu'};
4、js中json与数组的区别:
json的下表是一个字符串,二数组的下表是一个数字
json没有length属性,而数组是有length属性的
数组有两种循环。惊悚只有一种for in循环
5、js中将字符串转换成json的三种方式
方法一 使用eval eval方法必须要用一个圆括号包起来
原因:归结于eval本身的问题,由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
解决方法:加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。
(function strToJson(str){
var json=eval('('+str+')');
return json;
}
方法二 使用 new Functoin 的形式
function strToJson(str){
var json=(new Function("return"+str))();
return json;
}
方法三 使用全局的json对象 格式要求会比较严格 严格按照格式 里边用双引号 外边用单引号
JSON.parse() 会把一个字符串解析成 JSON 对象。如果字符串书写正确,那么其将会被解析成一个有效的 JSON,但是这个字符串被检测出错误语法的时候将会抛出错误。
JSON.parse() 不允许在末尾添加多余的逗号
JSON 的属性名必须使用双引号
数字不能用 0 开头,比如01,并且你的小数点后面必须跟着至少一个数字
function strToJson(str){
return JSON.parse(str);
}
6、JSON.stringify()方法
JSON.stringify() 方法可以将任意的 JavaScript 值序列化成 符合JSON语法的 字符串。若转换的函数被指定,则被序列化的值的每个属性都会经过该函数的转换和处理;若转换的数组被指定,只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中。
7、toJSON 方法