美文网首页
#hello,JS:06-2{ "JSON" }

#hello,JS:06-2{ "JSON" }

作者: 饥人谷_远方 | 来源:发表于2018-08-10 16:07 被阅读0次

    一、定义

    JSON,用于数据交换的文本格式(解析之后得到一个相应的对象),是一种数据格式
    如:

    { 
     "name":"wangxiaoqin", 
     "age":3
      }  
    //  {name:  "wangxiaoqin", age:  3}
    

    二、Json对值得类型和格式有严格规定

    • 复合类型的值:数组、对象(不能是函数、正则表达式对象、日期对象)
    • 简单类型的值:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinityundefined
    • 字符串必须使用双引号(不能使用单引号)
    • 对象的键名必须放在双引号里面。
    • 数组或对象最后一个成员的后面不能加逗号

    1、合格的 JSON 值

    注:合格的 JSON 值:空数组[ ] 、 空对象{}null

    ["one", "two", "three"]  
    {  "one":  1, "two":  2, "three": 3 } 
    {"names":  ["张三",  "李四"]  } 
    [ {  "name": "张三"}, {"name":  "李四"} ]
    

    2、不合格的JSON值

    {name: "张三", 'age': 32 }  // 属性名必须使用双引号 
    
    [32,  64,  128,  0xFFF]    //不能使用十六进制值 0xFFF 
    
    {"name":  "张三",  "age": undefined}  //不能使用undefined 
     
    {"name":  "张三",  
              "birthday":  new  Date('Fri, 26 Aug 2011 07:13:10 GMT'),  
              "getName": function() {  
                   return this.name;  
                     } 
            }   //不能使用函数和日期对象  
    

    三、如何JS中处理JSON格式数据

    1、把一个符合JSON格式规则的字符串解析成对象——JSON.parse()

    var str =  '{"name":"wangxiaoqin","age":3}' 
    JSON.parse(str)  
    //{name:  "wangxiaoqin", age:  3} 
    
    /*调用单独属性*/
     JSON.parse(str).age
     // 3
     JSON.parse(str).name 
    //"wangxiaoqin"
    

    如图:


    image

    题外话:

    深拷贝的另一种写法

    利用JSON.parse()实现一个简单数据的深拷贝 ,对象转字符串

    var obj =  {
           name:  'hunger', 
           age:  3, 
           friends:  ['aa',  'bb',  'cc']  
            }//定义一个对象  
    
    /* 将对象解析成字符串 */
     JSON.stringify(obj)  
    //"{"name":"hunger","age":3,"friends":["aa","bb","cc"]}"  
    
    /* 再把字符串解析成对象 */  
    JSON.parse(JSON.stringify(obj)) 
    //{name:  "hunger", age:  3, friends:  Array(3)} 
    
     //深拷贝:相当于重组对象,外观一样,内核已变
    

    2、把一个JS对象解析成字符串——JSON.stringify()

    obj =  {a:1, b:2}
    //{a:  1, b:  2} 
    
    JSON.stringify(obj)  
    //"{"a":1,"b":2}"
    
    /* 解析为字符串值符合JSON格式 */
    

    如图:


    image

    四、Javascript对象和JSON的关系

    • javascript对象的字面量写法只是长的像 JSON 格式数据(JS属于模仿JSON),二者属于不同的范畴
    • JavaScript 对象中很多类型(函数、正则、Date) ,JSON 格式的规范并不支持
    • JavaScript 对象的字面量写法更宽松(如可不为属性名引号)

    相关文章

      网友评论

          本文标题:#hello,JS:06-2{ "JSON" }

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