JSON 是JavaScript object Nota JS对象表示法;JSON和JS对象的格式一样,只不过JSON字符串中的属性名必须加双引号。其他与JS语法一致
JSON分类:1.对象{} 2.数组【】
JSON中允许的值:1.字符串2.数值3.布尔值4.null5.对象6.数组
很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。
其实,可以这么理解:JSON 是 JS 对象的字符串表示法。它使用文本表示一个 JS 对象的信息,(JSON)本质是一个字符串。
对象序列化是指将对象的状态转换为字符串,也可以反序列化,将字符串还原为对象函数。
RegExp,Error对象,undefined值不能序列化和反序列化。
JSON.stringify(obj) 将对象序列化为JSON字符串,只能序列化对象可枚举的自有属性
JSON.parse(jsonStr) 反序列化(变成对象)
如:
var obj = {a: 'Hello', b: 'World'}; //这是一个js对象,注意js对象的键名也是可以使用引号包裹的,这里的键名就不用引号包含
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
JSON(格式字符串) 和 JS 对象(也可以叫JSON对象 或 JSON 格式的对象)互转(JSON.parse 和 JSON.stringify)。
要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'} 一个对象
要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}' 一个JSON格式的字符串
说句不严谨的话:JSON.parse() 就是字符串转 js 对象, JSON.stringify()就是 js 对象转字符串,它们前提是要 json 格式才有意义。
在JQ中使用$.parseJSON()来讲json对象转换为js对象,使用$.param()进行序列化
var obj={
page:1,
pageSize:10
}
console.log($.param(obj));
// 结果是:page=1&pageSize=10
var obj1='{"name":"zhangsan","age":12}';
console.log($.parseJSON(obj1));
//{name: 'zhangsan', age: 12}