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语法

在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 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))

 

posted @ 2018-08-11 11:58  woz333333  阅读(228)  评论(0编辑  收藏  举报