JSON格式
内容:
1.什么是JSON
2.JSON语法
3.JSON如何使用
参考:https://baike.baidu.com/item/JSON/2462549?fr=aladdin
1.什么是JSON
百度百科解释:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
总的来说JSON是一种数据交换格式,类似XML,最开始是从JavaScript中弄出这个东西来的
JSON特点及优点:
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言 *
- JSON 具有自我描述性,更易理解
虽然JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言,json如下图所示:
2.JSON语法
-
对象表示为键值对
-
数据由逗号分隔
-
花括号保存对象
-
方括号保存数组
1 // JSON对象 2 { 3 "name": "wyb666", 4 "age": 21 5 } 6 7 // JSON数组 8 nums = [21, 22, 23, 24, 25, "666"]
JSON 键/值对:JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:
1 { 2 "name": "wyb" 3 }
合格的json对象:
["one", "two", "three"] { "one": 1, "two": 2, "three": 3 } {"names": ["张三", "李四"] } [ { "name": "张三"}, {"name": "李四"} ]
不合格的json对象:
{ name: "张三", 'age': 32 } // 属性名必须使用双引号 [32, 64, 128, 0xFFF] // 不能使用十六进制值 { "name": "张三", "age": undefined } // 不能使用undefined { "name": "张三", "birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'), "getName": function() {return this.name;} // 不能使用函数和日期对象 }
3.JSON如何使用
JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言(Java、python、PHP等)所支持的数据格式。在用到AJAX时,如果需要用到数组传值,这时就需要用JSON将数组转化为字符串
JSON使用实例:
有一个常见的需求是在 字典/数组 和 字符串 之间相互转换,这个过程叫做 序列化/反序列化
在 js 中, 序列化使用 JSON 数据格式,全称 JavaScript Object Notation (js 对象标记),这个格式已经是现在用于互联网数据交换的事实标准格式了
JavaScript中的序列化/反序列化操作:
1 var s = JSON.stringify([1, 2, 3, 4]) // 将数组转化成字符串 2 console.log('序列化后的字符串: ', typeof s, s) 3 var a = JSON.parse(s) 4 console.log('反序列化后的数组: ', typeof a, a) // 将字符串转化成数组或对象
python中的序列化/反序列化操作:
1 # json.dumps方法可以将字典等数据格式化成一个字符串,这样可以方便别的编程语言进行调用 2 # json.dump方法把字典等数据类型序列化进入一个文件中,等待别的程序进行调用 3 # json.loads进行反序列化 4 # json.load方法读取文件中的内容 5 6 import json 7 s = {"k1": "v1", "k2": "v2"} 8 k = json.dumps(s) # 序列化: 将字典、数组等类型转换成字符串 9 print(k, type(k)) 10 res = json.loads(k) # 反序列化: 将字符串转换成其他类型(字典、数组等) 11 print(res, type(res)) 12 13 # 打开一个文件向其中写入字典、列表等数据类型 14 with open("test.json", "w") as f: 15 json.dump(s, f) 16 17 # 读取文件内容 18 with open("test.json", "r") as f: 19 r = json.load(f) 20 print(r) 21 print(type(r))