JSON(JavaScript对象表示法)是一种轻量级的数据交换格式, 人类易于读写。计算机也很容易解析和生成。 JSON基于JavaScript编程语言。它是一种独立于语言的文本格式, 可以在Python, Perl等其他语言中使用。它主要用于在服务器和Web应用程序之间传输数据。 JSON建立在两种结构上:
- 名称/值对的集合。这可以实现为对象, 记录, 字典, 哈希表, 键列表或关联数组。
- 值的有序列表。这可以实现为数组, 向量, 列表或序列。
有一些在Python中支持JSON的软件包, 例如metamagic.json, jyson, simplejson, Yajl-Py, ultrajson和json。在本教程中, 我们将使用Python本身支持的json。我们可以使用提供JSON linter的此站点来验证我们的JSON数据。
以下是JSON数据的示例。我们注意到数据表示非常类似于Python字典。
{
"article": [{
"id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
}, {
"id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
}
], "blog":[
{
"name": "srcmini", "URL":"srcmini.com"
}
]
}
将JSON转换为Python对象
【Python中的JSON数据处理】我们可以使用json模块中的json.loads()方法解析上述JSON字符串。结果是一个Python字典。
import json
my_json_string = """{
"article": [{
"id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
}, {
"id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
}
], "blog":[
{
"name": "srcmini", "URL":"srcmini.com"
}
]
}
"""
to_python = json.loads(my_json_string)
to_python['blog']
[{'URL': 'srcmini.com', 'name': 'srcmini'}]
将Python对象转换为JSON
使用json.dumps(), 我们可以将Python对象转换为JSON。
blog = {'URL': 'srcmini.com', 'name': 'srcmini'}
to_json= json.dumps(blog)
to_json
'{"URL": "srcmini.com", "name": "srcmini"}'
让我们比较一下Python和JSON中的数据类型。
Python | JSON |
---|---|
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
Python元组到JSON数组
tuple_example = 'Mango', 'Banana', 'Apple';
print(json.dumps(tuple_example));
["Mango", "Banana", "Apple"]
Python列表到JSON数组
list_example = ["Mango", 1, 3, 6, "Oranges"];
print(json.dumps(list_example));
["Mango", 1, 3, 6, "Oranges"]
Python字符串到JSON字符串
string_example = "This is a cool example."
print(json.dumps(string_example))
"This is a cool example."
Python布尔值到JSON布尔值
boolean_value = http://www.srcmini.com/False
print(json.dumps(boolean_value))
false
编写JSON文件
json模块还允许我们将JSON数据写入JSON文件。 JSON文件以.json扩展名保存。让我们看看下面如何做到这一点。为了实现这一点, 我们使用Python的open()函数, 将w作为参数来表示我们要写入文件。
my_json_string = """{
"article": [{
"id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
}, {
"id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
}
], "blog":[
{
"name": "srcmini", "URL":"srcmini.com"
}
]
}
"""
with open('test_file.json', 'w') as file:
json.dump(my_json_string, file)
读取JSON文件
现在, 让我们展示如何读取刚刚创建的JSON文件。我们使用json.load加载文件。
with open('test_file.json', 'r') as j:
json_data = http://www.srcmini.com/json.load(j)
print(json_data)
{
"article": [{
"id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
}, {
"id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
}
], "blog":[
{
"name": "srcmini", "URL":"srcmini.com"
}
]
}
json.load与json.loads
加载文件时使用json.load, 而加载字符串时使用json.loads(load string)。
json.dump与json.dumps
要将JSON转储到文件中时, 请使用json.dump。当我们需要JSON数据作为解析或打印的字符串时, 将使用json.dumps(dump string)。
在数据科学中处理JSON数据
有时, 我们在数据科学活动中需要加载JSON格式的数据。熊猫提供了.read_json, 使我们能够做到这一点。加载数据后, 我们使用pandas.DataFrame属性将其转换为数据框。
import pandas as pd
data = http://www.srcmini.com/pd.read_json("https://api.github.com/users")
df = pd.DataFrame(data)
df
实施局限性
编码JSON的过程称为序列化, 而解码JSON的过程称为反序列化。某些JSON解串器实现可能会在以下方面设置限制:
- 可接受的JSON文本的大小
- JSON对象和数组的最大嵌套级别
- JSON编号的范围和精度
- JSON字符串的内容和最大长度
API中的JSON
JSON的主要应用之一是在Web应用程序中构建API。这非常有用, 因为它允许其他开发人员使用支持JSON的任何语言在我们的API之上构建。大多数现代编程语言都支持JSON。我们将展示一个简单的示例, 说明如何在Python中构建Flask应用程序时如何返回JSON。 Flask提供了jsonify模块, 使我们能够实现这一目标。
from flask import jsonify@app.route('/_get_current_user')
def get_current_user():
return jsonify(username=g.user.username, email=g.user.email, id=g.user.id)
这将向浏览器发送类似于以下所示的JSON响应。
{
"username": "Derrick Mwiti", "email": "myemail@gmail.com", "id": 1
}
{'email': 'myemail@gmail.com', 'id': 1, 'username': 'Derrick Mwiti'}
总结在本教程中, 我们已经对Python中的JSON进行了介绍。我们已经介绍了JSON模块提供的各种方法, 例如json.load和json.dumps。我们还看到了我们可以在数据科学项目中加载JSON数据, 以及如何在构建API时返回JSON数据。你可以通过访问Python网站的官方页面来了解有关JSON模块的更多信息。
如果你想了解有关Python的更多信息, 请参加srcmini的Python数据库入门课程。
推荐阅读
- MongoDB和Python简介
- TensorFlow初学者教程
- Python中的决策树分类
- 读取Excel文件并将其导入R
- 歌词分析(使用带有R的机器学习进行预测分析)
- R Apply系列教程
- Win 8系统下PDF文件不显示缩略图怎样处理
- Win8账户密码输错导致无法退出安全模式该如何处理
- Win8/Win 8杀毒软件评测结果:小红伞/卡巴/比特梵德满分排列首