欢迎,来自IP地址为:18.97.9.173 的朋友
JSON格式已经变得非常普遍,常常用于Android设备、Web服务以及REST API接口等。本教程将着重介绍JSON格式以及Python程序如何处理JSON文件。
什么是JSON
- JSON是JavaScript Object Notation的缩写,表示JS对象符号,是一种数据表示格式
- 这种格式经常被用于服务器和客户端间传递数据
- 这种格式还常常用于应用程序间传递数据
- JSON格式在Web应用开发中非常重要,是事实上REST API的数据格式标准
- 它是基于Java脚本的一个子集
- 它便读取和写入
为什么要使用JSON
最初网站的开发都使用HTML语言,HTML就像是事实上的设计模式,人们创建的网页都是静态的,即在设计完成后内部就相对固定,不会产生变化。但现在,一切都改变了,网站变得支持动态页面了。动态页面意味着从服务器获得的数据将是动态的,或者根据用户请求的不同,会得到不同的响应。
- 当客户端向服务器发送请求后,服务器会将响应数据反馈给客户端,这个响应数据当然可以是纯文本,但是纯文本内容对于客户端程序来说是非常难于理解的
举例来说:
- 假设数据库中有10个雇员信息,如果以纯文本格式响应请示,那么响应数据大概是以下的样子:
employee name is John Doe, employee address is Chicago
- 那么问题来了,假设所有雇员的响应信息都以这种格式返回,人当然可以通过阅读理解到其中的内容,但是这对于编程来说就非常难于实现
- 因此,我们需要一个定义良好的结构,以便我们可以轻松地读取程序中的数据,而JSON正是被广泛使用的结构。
- 如果你正在构建一个应用程序,其前端通过API与服务器交互通信。那么,JSON是通过HTTP请求发送和接收数据的标准格式。
JSON语法规则
- 使用键值对——{“name”:”sam”}
- 键名使用双引号括起
- 必须使用特定的数据格式
- 文件扩展名为”.json”
- MIME 类型为”Application/json”
JSON文件示例
以下是一个标准的JSON格式文件示例:
{ "name":"Sam" "age":20 "address":{ "street":"Main street" "city":"Ranchi" } "salary":5000 }
Python读取JSON文件
现在,我们将要了解Python如何读取JSON文件,其实这并不复杂,我们也将涉及一些细节。
创建JSON文件
首先,我们需要创建一个JSON文件以用于示例,仍然采用之前雇员信息的例子,我们创建一个”employee.json”文件,内容如下:
{ "employees": [ { "name": "Sam", "Dept": "HR", "salary": 5000 }, { "name": "Mayra", "Dept": "Sales", "salary": 6000 }, { "name": "Hisham", "Dept": "HR", "salary": 9000 }, { "name": "Arsh", "Dept": "Production", "salary": 10000 } ] }
通过这个文件,我们存储了雇员的名字、部门和薪酬信息。首先,我们创建一个JSON对象,这个对象包含一个键”employees”,这个键对的值是一个包含若干JSON对象的数组,数组中的每个元素就是一个JSON对象,包含了不同雇员的具体信息。注意,每个JSON对象用大括号({ })包围,而对象数组使用中括号([ ])包围。在数组中可以添加任意多的JSON对象。
创建Python脚本
在IDE中创建一个Python脚本文件,并将之前创建的JSON文件保存在同一目录中。
读取JSON文件
我们想要读取JSON文件内容,就要先将文件内容加载到Python对象中,这需要调用”json.load()”方法,脚本如下:
import json #open the file with open('employee.json') as f: data = json.load(f) #reading file for emp in data['employees']: print(emp)
我们都做了些什么
- 首先我们导入了json模块
- 然后我们使用with语言将json文件打开,注意由于json文件同Python脚本位于同一目录,并没有在程序中指定文件位置,实际使用时需要指定文件位置以免出错
- 调用json.load(f)方法将文件内容加载到Python对象中
- 通过循环迭代,依次访问对象中的元素
- 最后打印出每个对象的内容
如果我们执行上面的脚本,会得到以下的输出结果:
可以看到,Python脚本可以方便的处理JSON对象,并且可以区分具有相同属性的不同数据。
访问JSON文件的某些属性
如果只想获取JSON对象的某些属性,Python处理上也非常简单,例如想了解雇员的姓名和薪酬情况,只需要对上面的代码做如下修改:
for emp in data['employees']: print(emp["name"],emp["salary"])
从上面的代码可以看出,json.load()函数可以将JSON对象转换为Python的字典对象,之后Python就可以操作这个字典对象了,是不是很方便呢。