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

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])
          }
    }
}

上一篇下一篇

猜你喜欢

热点阅读