JSON+JSON5介绍

JSON使用介绍

1、简介

JSON,全称:javascriip对象表示法(JavaScript Object Notation),类似于XML,是轻量级的存储和交换文本信息的语法格式,并且JSON一段文本内容,JSON比XML存储更小、读写速度更快、更易解析,并且比XML更易于人阅读,JSON独立于语言,基本所有语言都支持JSON。

2、JSON语法规则

1、数据在名称/值对中
2、数据件用逗号分隔
3、使用斜杆\进行转义字符
4、大括号{}保存对象
5、中括号[]保存数组

  • JSON 名称/值 对的结构
key:value

需要注意的是名称要用双引号包裹并且也只能是双引号。
例如:

"name":"jack"
  • JSON的可取值
    可以是:

    • 数字(整数或者浮点数)
    • 字符串(在双引号中)
    • 布尔值(true或false)
    • 数组(在中括号中)
    • 对象(在打括号中)
    • null
  • JSON的两种结构:
    1、对象:大括号 {} 保存的对象是一个无序的名称/值对集合
    例如:

let jsonData = {
	"name":"jack",
	"age":12,
	"courge":["高等数学(上)","高等数学(下)","大学物理"],
	 "graduate":false
}

2、数组:中括号 [] 保存的数组是值(value)的有序集合

let jsonData = [
	{"name":"jack","age":21,"graduate":false},
	{"name":"rose","age":22,"graduate":false},
	...
]

3、JSON文件

JSON文件的类型为.json
JSON文本的MINE类型是application/json

4、访问\修改\删除数据

  • 在javascript中,也可以定义和使用JSON格式数据,所以也可以通过JavaScript语法访问、更改JSON中的数据

4.1 操作对象数据

let jsonData = {"name":"jack","age":23,"graduate":false}

// 点访问
jsonData.name
// 修改
jsonData.name = "rose"
// 删除数据
delete jsonData.name

// 中括号访问
jsonData["name"]
// 修改
jsonData["namej"] = "rose"
// 删除数据
delete jsonData["name"]

(1)在使用for in遍历时,只能通过 jsonData[x] 来获取相应属性的值,而不能使用 jsonData.x
(2)并不是彻底删除元素,而是删除它的值,但仍会保留空间

4.2 操作数组数据

var sites = [ 
    { "name":"google" , "url":"www.google.com" }, 
    { "name":"微博" , "url":"www.weibo.com" }
];

// 访问json中的数据
sites[0].name
// 修改
sites[0].name = "xxx"
// 删除
delete sites[0].name

5、常用的对象-JSON字符串互转的方法

首先得区分js对象,JSON对象和JOSN字符串,如下:

js对象

let jsObj = {name:"jack",age:21}

json对象

let jsonObj = {"name":"jack","age":23}

json字符串

let jsonObjStr = '{"name":"jack","age":23}'

可以看到json字符串是将整个json对象用引号包裹起来,包括最外层的括号

5.1 JOSN.stringify(value)方法

作用:将普通js对象转为json字符串

let jsonData = {
    name: "jack",
    age: 23,
    gender: "female",
    course: ["chinese", "english", "japanese"]
}

let changeToJsonStr = JSON.stringify(jsonData)
console.log(changeToJsonStr);

// { "name": "jack", "age": 23, "gender": "female", "course": ["chinese", "english", "japanese"] }

5.2 JSON.parse(value,[reciver])

作用:将json字符串转为普通js对象
参数reciver:一个转换结果的函数,对象的每个成员调用此函数

let jsonStr = '{ "name": "jack", "age": 23, "gender": "female", "course": ["chinese", "english", "japanese"] }'

let jsonObj = JSON.parse(jsonStr)

console.log(jsonObj);
// {
//     name: 'jack',
//     age: 23,
//     gender: 'female',
//     course: [ 'chinese', 'english', 'japanese' ]
// }

使用第二个参数

var text = '{ "name":"jack", "birthday":"2010-11-14", "address":"湖南"}';
var obj = JSON.parse(text, function (key, value) {
    if (key == "birthday") {
        return new Date(value);
    } else {
        return value;
}});

JSON5介绍

在开发Panda Api的最初版本,文档是用json来写的,但json语法不支持注释不支持字符串换行,所有的key都必须双引号末尾不能有多余的逗号…等等,一大堆极其严格的要求和不支持的功能。Json5是对JSON的扩展,放宽了原本json语法中一些不必要的语法规定,让人可以更容易手工编写和维护。

安装引用json5

安装

npm install json5

引用

// node.js中引用
const JSON5 = require('json5');

// vue 项目中引用
import JSON5 from 'json5'

改进的地方

下面我们简单看下json5相对于原来json语法上的区别
1、对象的 key 允许没有双引号
2、对象的 key 可以是任何 ES5.1 的标识符
3、对象和数组允许有多余的逗号结尾
4、字符串允许使用双引号、单引号包裹
5、字符串可以多行
6、字符串允许使用转义字符"Hello\nWorld\n!"
7、数字可以用十六进制表示0xFF
8、数字允许使用小数点开头或结尾.007,7.
9、数字前面可以有正号+负号-
10、数字可以使用正无穷大Infinity负无穷大-Infinity、和 NaN来表示
11、支持单行注释//和多行注释/* */
12、允许在任何在 json5 相关符号前后出现多余的空白符

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,你想要了解如何使用not、close、json、text和token。下面是关于这些内容的介绍和示例: 1. not:not是Python中的逻辑运算符,用于对布尔值进行取反操作。当not后面的表达式为True时,not返回False;当not后面的表达式为False时,not返回True。 示例: ```python x = True print(not x) # 输出:False y = False print(not y) # 输出:True ``` 2. close:close是Python中文件对象的方法,用于关闭文件。关闭文件可以释放系统资源并确保文件的正确关闭。 示例: ```python file = open("example.txt", "r") # 读取文件内容 file.close() # 关闭文件 ``` 3. jsonjson是Python中的模块,用于处理JSON数据。它提供了一组函数来解析和生成JSON数据。 示例: ```python import json # 解析JSON字符串 json_str = '{"name": "John", "age": 30, "city": "New York"}' data = json.loads(json_str) print(data["name"]) # 输出:John # 生成JSON字符串 data = {"name": "John", "age": 30, "city": "New York"} json_str = json.dumps(data) print(json_str) # 输出:{"name": "John", "age": 30, "city": "New York"} ``` 4. text:text是指文本数据,通常是指以纯文本形式存储的数据,不包含任何格式或样式。 示例: ```python text = "Hello, World!" print(text) # 输出:Hello, World! ``` 5. token:token是一个用于身份验证和授权的令牌。在网络通信中,token通常是一个字符串,用于标识用户的身份和权限。 示例: ```python token = "abcdefg123456" # 使用token进行身份验证和授权 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值