JSON

JSON(JavaScript Object Notation)是一种轻量级的、基于文本的数据格式,在很多环境都有支持,本文将介绍JSON在JavaScript中的应用。

基本数据类型

JSON中的基本数据类型与JavaScript相似,包括:

  • 数值,包括整数和浮点数据,如1、1.23等。
  • 字符串,使用一对双引号定义,如"abc"等。如果字符串内容包含双引号,需要进行转义,需要注意,JSON数据定义在JavaScript的字符串中时,需要先对\符号进行转义,即在JSON字符串中的"符号需要使用\\"进行转义。
  • 布尔值,包括true值和false值。
  • 空值,使用null关键字。

JSON数据一般会使用数组(Array)或映射(Map)数据结构传递,下面分别介绍。

数组对象

JSON的数组使用一对方括号定义,每个元素使用逗号(,)分隔。将字符串格式的JSON数据转换为JavaScript对象时可以使用JSON.parse()方法,如下面的代码。

JavaScript
<script>
    let json = '[1,2,3]';
    let arr = JSON.parse(json);
    alert(arr.length);  // 3
    alert(arr[1]);  // 2
</script>

本例,字符串json中定义了JSON格式的数组,然后,使用JSON.parse()方法转换为JavaScript中的数组对象;最后,显示了数组元素的数量和第二个元素的数据。

下面的代码显示了JSON数据中包含双引号的情况。

JavaScript
<script>
    let json = '["a","b","c\\""]';
    let arr = JSON.parse(json);
    alert(arr.length);  // 3
    alert(arr[2]);  // c"
</script>

将JavaScript对象转换为JSON格式字符串时可以使用JSON.stringify()方法,如下面的代码。

JavaScript
<script>
    let arr = [1,2,3];
    let json = JSON.stringify(arr);
    alert(json);  // [1,2,3]
</script>

映射对象

JSON中的映射(Map)对象使用一对花括号定义,其格式为{key1:value1, key2:value2, ...}。下面的代码演示了相关应用。

JavaScript
<script>
    let json = '{ "name": "Tom", "age": 25, "sex": "男" }';
    let m1 = JSON.parse(json);
    alert(m1["name"]);  // Tom
    alert(m1.age); // 25
    //
    let map = new Map(Object.entries(m1));
    alert(map.get("name")); // Tom
    alert(map.get("sex")); // 男
</script>

代码中,首先使用单引号字符串定义了JSON中的Map数据结构,然后使用JSON.parse()方法转换为JavaScript中的Map结构,并显示了其中name和age的数据;接下来,将数据转换为Map集合对象,并通过get()方法显示了name和sex的数据。

将JavaScript中的Map结构数据转换为JSON字符串时,同样使用JSON.stringity()方法,如下面的代码。

JavaScript
<script>
    let m1 = { "name": "Tom", "age": 25, "sex": "男" };
    //
    let json = JSON.stringify(m1);
    alert(json);
</script>

执行代码会显示{"name":"Tom","age":25,"sex":"男"}。