JavaScript--JSON

一、概述

  • JSON(JavaScript Object Notation,JavaScript对象表示法),它是JavaScript的一个严格子集。
  • JSON只是一种简单数据格式,并不是只有JavaScript拥有。

二、语法

JSON对值的类型和格式有严格的规定:

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

最简单的JSON数据形式就是简单值。

5
"tg" 
null 
true 
false
对象

JSON中的对象与JavaScript中的对象字面量基本一样,除了JSON中的对象要求对象的属性一定要加上双引号(对象字面量的 属性对引号可有可无)。

{ 
    "name": "tg" 
}

当然,你可以使用嵌套对象:

{ 
    "name": "tg", 
    "school": { 
        "name": "tg", 
        "location": "gz" 
    } 
}

注意:上面有两个同名(name)属性,这是没问题的,因为它们属于不同的对象,但是请注意,同一对象内不能 出现两个同名属性。

数组

JSON数组采用的是JavaScript中的数组字面量。

{
 "color": ["red","blue"] 
}

注意:也可以在数组中放对象,对象中放数组。

三、序列化和反序列化

JSON对象有两个方法: JSON.stingify()JSON.parse() ,分别表示将JavaScript对象序列化为JSON字符串和把 JSON字符串解析为原生的JavaScript值。

JSON.stringify()

JSON.stringify 方法用于将一个Javascript对象序列化为字符串。该字符串应该符合JSON格式,并且可以被 JSON.parse 方法还原。

var data = { 
        name: 'tg', 
        age: 1, 
        books: [ "Javascript", 2], 
        location:{ name: "gz", },
        test: function(){}, 
         sex: undefined 
};
console.log(JSON.stringify(data)); 
//{"name":"tg","age":1,"books":["Javascript",2],"location":{"name":"gz"}}

注意:在序列化JavaScript对象时,所有函数及原型成员都会被有意忽略,不体现在结果中,而且值为undefined的任何属性 也会被跳过,还有正则对象会被转成空对象。,最终返回来的值为有效的JSON格式。

JSON.parse()

JSON.parse 方法用于将JSON字符串转化成原生的JavaScript对象。

var jsonText = '{
        "name":"tg",
        "age":1,
        "books":["Javascript",2],
        "location":{"name":"gz"}}'; 
console.log(JSON.parse(jsonText)); 
//返回对象 { name: 'tg', age: 1, books: [ "Javascript", 2], location:{ name: "gz", } };

注意:如果传入的字符串不是有效的JSON格式,则会报错。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容