下载APP

JSON

参考:https://www.yuque.com/u1598738/sb8ukx/bv296p#v2AIM

概念

轻量级数据交换格式,容易扩展,容易读取和操作,多种语言均支持。

结构与语法

1、结构

{"name": "messi"}

以key value结构存储,key需要用双引号扩起,value可以是任何数据类型,如: 下面是 JSON 数据类型的完整列表:

  • string:用引号括起来的文字。
  • number:正整数或负整数或浮点数。
  • object:用花括号括起来的键值对
  • array:一个或多个 JSON 对象的集合。
  • boolean:不带引号的 true 或 false 值。
  • null:表示键值对没有数据,表示为null,不带引号。

2. 语法

下面来看看 JSON 的语法,如何避免常见的 JSON 错误:

  • 始终将键值对保存在双引号内,大多数 JSON 解析器使用双引号解析 JSON 对象;
  • 切勿在 key 中使用连字符。而是使用下划线 (_)、全部小写或驼峰式大小写;

解析与序列化

JSON 提供了两种方法:

  • JSON.parse() :将JSON字符串转换为 JavaScript 对象。
  • JSON.stringify() :将 JavaScript 对象转换为JSON字符串。

1. JSON.parse()

使用方式:

JOSN.parse(jsonStr, func)

jsonStr: 将要转换的json字符串;

func:对转换后的对象的每一属性执行的进一步函数逻辑处理;

demo:

image.png

注意: func参数为key,value,切必须有返回值

2. JSON.stringify()

使用方式:

JSON.strigify(jsonObj, func, space)

jsonObj:需要转换的json对象

Func/arr:func=>转换时对json对象的每个属性处理的逻辑;arr=>保留的属性

space:对转换后的字符串的格式要求,一般用于将json字符串写入某文件,按照某种锁进或者格式;

demo:

参数3:space

image.png

说明:

  • space: 可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t

参数2:func

image.png

参数2:属性数组

image.png

异常处理

那如果JSON无效怎么办呢?比如缺少了逗号,引号等,上面的两种方法都会抛出异常。建议在使用这两个方法时使用try...catch来包裹,也可以将其封装成一个函数。

try {
    JSON.stringify(jsonObj)
    JSON.parse(jsonStr)
} catch(e){
    console.log(e.message)
}

其他操作

let obj = {"name": "messi", "age": 10}

1、删除属性

image.png

2、访问数组

image.png

2、遍历数组

image.png

json工具

  • JSONLint:JSON 数据的验证器;
  • JSONedit:一个可视化 JSON 构建器,可以轻松构建具有不同数据类型的复杂 JSON 结构;
  • JSON API:用于在 JSON 中构建 API 的规范;
  • JSON Formatter:用于验证、美化、缩小和转换 JSON 数据的在线工具;
  • JSON Generator:生成随机 JSON 数据的在线工具。
在线举报