参考: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:
注意: func参数为key,value,切必须有返回值
2. JSON.stringify()
使用方式:
JSON.strigify(jsonObj, func, space)
jsonObj:需要转换的json对象
Func/arr:func=>转换时对json对象的每个属性处理的逻辑;arr=>保留的属性
space:对转换后的字符串的格式要求,一般用于将json字符串写入某文件,按照某种锁进或者格式;
demo:
参数3:space
说明:
- space: 可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:
\t
。
参数2:func
参数2:属性数组
异常处理
那如果JSON无效怎么办呢?比如缺少了逗号,引号等,上面的两种方法都会抛出异常。建议在使用这两个方法时使用try...catch
来包裹,也可以将其封装成一个函数。
try {
JSON.stringify(jsonObj)
JSON.parse(jsonStr)
} catch(e){
console.log(e.message)
}
其他操作
let obj = {"name": "messi", "age": 10}
1、删除属性
2、访问数组
2、遍历数组
json工具
- JSONLint:JSON 数据的验证器;
- JSONedit:一个可视化 JSON 构建器,可以轻松构建具有不同数据类型的复杂 JSON 结构;
- JSON API:用于在 JSON 中构建 API 的规范;
- JSON Formatter:用于验证、美化、缩小和转换 JSON 数据的在线工具;
- JSON Generator:生成随机 JSON 数据的在线工具。