美文网首页
#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