江在川上曰:js中的JSON解析和序列化
JSON解析和序列化
JSON是javascript的一个严格的子集,利用了javacript中的一些模式来表示结构化数据。他只是一种数据格式,并非一种编程语言。
JSON语法
JSON可以表示三种类型的值。
类型 | 说明 |
---|---|
简单值 | 可以在JSON使用String、Number、Boolean和null,但是不能够使用undefined。 |
对象 | 是一组无序的键值对,值可以是简单值、也可以是对象、数组。 |
数组 | 是一组有序的值的序列,可以通过索引索引值,值可以是简单值、也可以是对象、数组。 |
var myJson = {
"name":"jesse",
"age":"12",
"score":{
"Chinese":"98",
"Math":"99",
"English":"100"
},
"goods":[
{"name":"paper","price":"20"},
{"name":"pencil","price":"2"},
{"name":"book","price":"1"}
]
}
切记:同一个json对象不能出现同名的属性,必须保持唯一性。
JSON解析
语法:JSON.parse(text,[reviver])
作用:将javascript表示的JSON字符串转为JSON对象
参数:
- text: 必选,一个有效的JSON字符串
- reviver:可选,一个还原函数,对象中的每一个成员都将使用该函数
返回值:一个对象或数组
let myString = '{"name":"jesse","age":"12","score":{"Chinese":"98","Math":"99","English":"100"},"goods":[{"name":"paper","price":"20"},{"name":"pencil","price":"2"},{"name":"book","price":"1"}]}';
JSON.parse(myString)
得到:
{
"name":"jesse",
"age":"12",
"score":{
"Chinese":"98",
"Math":"99",
"English":"100"
},
"goods":[
{"name":"paper","price":"20"},
{"name":"pencil","price":"2"},
{"name":"book","price":"1"}
]
}
JSON序列化
语法:JSON.string(value,[replacer],space)
作用:将javascript表示的json对象转为json字符串
参数:
- value:必选,需要转换的json对象
- replacer:可选,过滤器,用于转换结果的函数或数组
- space:可选,用于控制结果中的缩进和空白符。
- 返回值:一个包含json文本的字符串
var myJson = {
"name": "jesse",
"age": "12",
"score": {
"Chinese": "98",
"Math": "99",
"English": "100"
},
"goods": [
{ "name": "paper", "price": "20" },
{ "name": "pencil", "price": "2" },
{ "name": "book", "price": "1" }
]
}
JSON.stringify(myJson)
得到:
{"name":"jesse","age":"12","score":{"Chinese":"98","Math":"99","English":"100"},"goods":[{"name":"paper","price":"20"},{"name":"pencil","price":"2"},{"name":"book","price":"1"}]}