python对json数据处理,Python中的JSON数据处理
JSON(JavaScript对象表⽰法)是⼀种轻量级的数据交换格式, ⼈类易于读写。计算机也很容易解析和⽣成。 JSON基于JavaScript编程语⾔。它是⼀种独⽴于语⾔的⽂本格式, 可以在Python, Perl等其他语⾔中使⽤。它主要⽤于在服务器和Web应⽤程序之间传输数据。 JSON 建⽴在两种结构上:
名称/值对的集合。这可以实现为对象, 记录, 字典, 哈希表, 键列表或关联数组。
值的有序列表。这可以实现为数组, 向量, 列表或序列。
Python中的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"
}
]
graphics 4600相当于什么显卡
}
将JSON转换为Python对象
我们可以使⽤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"
}
git是先pull还是先commit]
}
"""
to_python = json.loads(my_json_string)
to_python['blog']
[{'URL': 'srcmini', 'name': 'srcmini'}]
将Python对象转换为JSON
使⽤json.dumps(), 我们可以将Python对象转换为JSON。blog = {'URL': 'srcmini', 'name': 'srcmini'}
to_json= json.dumps(blog)
to_json
'{"URL": "srcmini", "name": "srcmini"}'
让我们⽐较⼀下Python和JSON中的数据类型。
Python
JSON
dict
Object
list
Array
tuple
Array
str
String
int
Number
float
Number
True
true
False
false
None
下⾯我们将展⽰如何将各种Python对象转换为不同的JSON数据类型。
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 = False
print(json.dumps(boolean_value))
false
编写JSON⽂件
json模块还允许我们将JSON数据写⼊JSON⽂件。 JSON⽂件以.json扩展名保存。让我们看看下⾯如何做到这⼀点。为了实现这⼀点, 我们使⽤Python的open()函数, 将w作为参数来表⽰我们要写⼊⽂件。
my_json_string = """{
python请求并解析json数据
"article": [
{
"id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
}, {
"id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
}
], "blog":[
{
"name": "srcmini", "URL":"srcmini"
}
]
}
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 = 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"
}
]
}
json.load与json.loads
加载⽂件时使⽤json.load, ⽽加载字符串时使⽤json.loads(load string)。
json.dump与json.dumps
要将JSON转储到⽂件中时, 请使⽤json.dump。当我们需要JSON数据作为解析或打印的字符串时, 将使⽤json.dumps(dump string)。jsp论坛系统
在数据科学中处理JSON数据
有时, 我们在数据科学活动中需要加载JSON格式的数据。熊猫提供了.read_json, 使我们能够做到这⼀点。加载数据后, 我们使⽤pandas.DataFrame属性将其转换为数据框。
import pandas as pd
data = pd.read_json("api.github/users")
df = pd.DataFrame(data)
df
实施局限性
编码JSON的过程称为序列化, ⽽解码JSON的过程称为反序列化。某些JSON解串器实现可能会在以下⽅⾯设置限制:
可接受的JSON⽂本的⼤⼩
JSON对象和数组的最⼤嵌套级别
JSON编号的范围和精度
JSON字符串的内容和最⼤长度
但是, 此类限制仅与Python数据类型和Python解释器本⾝相关。
API中的JSON
JSON的主要应⽤之⼀是在Web应⽤程序中构建API。这⾮常有⽤, 因为它允许其他开发⼈员使⽤⽀持JSON的任何语⾔在我们的API之上构建。⼤多数现代编程语⾔都⽀持JSON。我们将展⽰⼀个简单的⽰例, 说明如何在Python中构建Flask应⽤程序时如何返回JSON。 Flask提供了jsonify模块, 使我们能够实现这⼀⽬标。
from flask import jsonify
帝国会员中心模板@ute('/_get_current_user')
def get_current_user():
return jsonify(username=g.user.username, email=ail, id=g.user.id)
这将向浏览器发送类似于以下所⽰的JSON响应。
{
"username": "Derrick Mwiti", "email": "myemail@gmail", "id": 1
}
{'email': 'myemail@gmail', 'id': 1, 'username': 'Derrick Mwiti'}
总结
在本教程中, 我们已经对Python中的JSON进⾏了介绍。我们已经介绍了JSON模块提供的各种⽅法, 例如json.load和json.dumps。我们还看到了我们可以在数据科学项⽬中加载JSON数据, 以及如何在构建API时返回JSON数据。你可以通过访问Python⽹站的官⽅页⾯来了解有关JSON模块的更多信息。
easyui教程 百度网盘
如果你想了解有关Python的更多信息, 请参加srcmini的Python数据库⼊门课程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。