JS中JSON 类型 —— 数据的迭代
2019-08-10 本文已影响0人
以虚名称之
JS 中 JSON 类型—— 数据的迭代
0. 什么是JSON?
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,JSON 数据格式与语言无关,脱胎自JavaScript,但目前很多编程语言都支持JSON 格式数据的生成和解析(维基)。
1. json类型的数据
JavaScript中,json类型的数据,有两种形式,一种是数组形式,另一种是对象形式
注意:json 与 js对象的区别
A. 为了统一解析,JSON的字符串规定必须用双引号
""
,Object的键也必须用双引号""
B. JSON键值对中的值不能为方法、函数/undefined/NaN
-
数组形式
用下标来定位元素,数组内的元素是对象形式的json数据
json1 = [
{"key1":"value1"},
{"key2":"value2"}
]
数组格式的json的迭代,可以使用js数组的遍历和迭代函数实现。
// 1.数组形式
json_array = [
{"key1":"value1"},
{"key2":
[
{"key21": "value21"},
{"key22": "value22"}
]
},
]
// 1)for in
for (let key in json_array){
console.log(key,json_array[key])
}
// 2) for of
for (let item of json_array){
console.log(item)
}
// 3) forEach
json_array.forEach(item=>
console.log(item)
)
-
对象形式
json2 = {
"key1":"value1",
"key2":[
{"key21": "value21"},
{"key22": "value22"}
]
}
对象格式的json的迭代,可以使用js对象的遍历方式实现。
// 2.对象形式
json_obj = {
"key1":"value1",
"key2":[
{"key21": "value21"},
{"key22": "value22"}
]
}
// 1) for in
for(let i in json_obj){
console.log(i,json_obj[i])
}
// 2) Object.keys
Object.keys(json_obj).forEach(key=>{
console.log(key,json_obj[key])
})
// 3) Reflect.ownKeys
Reflect.ownKeys(json_obj).forEach(key=>{
console.log(key,json_obj[key])
})
// 4) Object.getOwnPropertynames
Object.getOwnPropertyNames(json_obj).forEach(key=>{
console.log(key,json_obj[key])
})
思考 — 若对象形式的json数据,存在多级嵌套,则用递归处理
综合两种形式和嵌套的json迭代函数——json_iteration
json_iteration = function(json){
for(let key in json){
if (typeof(json[key]) == 'object') {
json_iteration(json[key])
}
else{
console.log(key,json[key])
}
}
}