美文网首页
JS中JSON 类型 —— 数据的迭代

JS中JSON 类型 —— 数据的迭代

作者: 以虚名称之 | 来源:发表于2019-08-10 14:26 被阅读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])
              }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:JS中JSON 类型 —— 数据的迭代

          本文链接:https://www.haomeiwen.com/subject/dvrrjctx.html