JSON中数据格式,序列化,解析

Json是什么?是一种数据格式。
数据的两个重要方面:一个是传输,一个是存储。
XML也是一种数据格式。今天Json在数据传输上是主流。

Json数据格式涉及到两个方面的问题
一个是将数据格式化 --- 序列化Json
一个是解析数据 --- 解析Json

注意事项:Json中的字符串和JS中的字符串的差别
在JS中字符串既可以采用双引号,也可以采用单引号。
但是,在Json中只能采用双引号。另外,建议在JS中
字符串采用单引号。

使用Json主要用来表示对象和数组这样的复杂数据结构,当然也可以
表示基本数据类型(String, Boolean, Number, Null, Undefine)

Json中的对象和JS中对象字面量之间的区别
在Json中键值对的键必须加双引号,但是在JS中不必。
在Json中键值对之间以,隔开,不可以出现分号。

注意事项:使用JSON传输数据往往出现如下错误;
对象的属性名忘记加双引号
给对象的属性名添加单引号而不是双引号。
Json中没有变量这样的概念

Json中的数组和JS中的数组几乎相同,还是那一点,对象的属性字段必须加上双引号。

例子:
{
    "name": "luohao",
    "city": ["wuhan", "chongdu", "chongqing", "xian"]
}

序列化:将Js中的对象转化成Json格式,序列化的两个参数:过滤器和选项。
var person = {
    username: 'luohao',
    password: 123456,
    location: 'whu'
}
参数是一个数组,出现在数组中的属性才会序列化,其余属性忽略不计。
var json = JSON.stringify(person, ['username', 'password']);
console.log(json);
{"username":"luohao","password":123456}

var person = {
    username: 'luohao',
    password: 123456,
    location: 'whu',
    hometown: 'wuhan',
}
var json = JSON.stringify(person, function filter(key, value) {
    switch(key) {
        case 'location': return undefined;
        case 'hometown': return undefined;
        default: return value;
    }
});
console.log(json);

{"username":"luohao","password":123456}

JSON.stringify()中的第三个参数表示缩进的空格数,
这样传输的数据可读性比较好。
var person = {
    username: 'luohao',
    password: 123456,
    location: {
        province: 'hubei',
        city: 'wuhan',
        county: 'qichun'
    },
    hometown: 'wuhan',
}
var json = JSON.stringify(person, function filter(key, value) {
    switch(key) {
        case 'hometown': return undefined;
        default: return value;
    }
});
console.log(json);
{"username":"luohao","password":123456,"location":{"province":"hubei","city":"wuhan","county":"qichun"}}

var person = {
    username: 'luohao',
    password: 123456,
    location: {
        province: 'hubei',
        city: 'wuhan',
        county: 'qichun'
    },
    hometown: 'wuhan',
}
var json = JSON.stringify(person, function filter(key, value) {
    switch(key) {
        case 'hometown': return undefined;
        default: return value;
    }
}, 2);
console.log(json);

{
  "username": "luohao",
  "password": 123456,
  "location": {
    "province": "hubei",
    "city": "wuhan",
    "county": "qichun"
  }
}

序列化最核心的一点就是序列化的顺序
toJSon()  可以为任何对象添加toJSon()方法
过滤器函数/属性数组
缩进格式
========================================
与序列化相对的就是解析
将JSon还原成JS对象
json.parse();
接受一个参数,这个参数的类型就是函数。同样是传入键值对,
依次对键对应的值进行转换
=============================================
JSON.stringify()用于向后台传输数据时作相应的处理。
JSON.parse()用于接受后台传来的数据时作相应的处理。
=============================================

猜你喜欢

转载自blog.csdn.net/qq_23143555/article/details/81152434