- ·上一篇文章:Python3 XML 解析
- ·下一篇文章:Python3 日期和时间
Python3 JSON 数据解析
Python3 JSON 数据解析JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:json.dumps():
对数据进行编码。json.loads():
对数据进行解码。在json的编解码过程中,python 的原始类型与json类型会相互转换,具体的转化对照如下:Python 编码为 JSON 类型转换对应表:PythonJSONdictobjectlist, tuplearraystrstringint, float, int- & float-derived EnumsnumberTruetrueFalsefalseNonenullJSON 解码为 Python 类型转换对应表:JSONPythonobjectdictarrayliststringstrnumber (int)intnumber (real)floattrueTruefalseFalsenullNonejson.dumps 与 json.loads 实例以下实例演示了 Python 数据结构转换为JSON:实例(Python 3.0+)
#!/usr/bin/python3import json
# Python 字典类型转换为 JSON 对象data = {'no' :
1,'name' :
'Runoob','url' :
'http:
//www.k88.net'}json_str = json.dumps(data)print ("Python 原始数据:", repr(data))print ("JSON 对象:", json_str)执行以上代码输出结果为:Python 原始数据: {'url':
'http:
//www.k88.net', 'no':
1, 'name':
'Runoob'}JSON 对象: {"url":
"http:
//www.k88.net", "no":
1, "name":
"Runoob"}通过输出的结果可以看出,简单类型通过编码后跟其原始的repr()输出结果非常相似。接着以上实例,我们可以将一个JSON编码的字符串转换回一个Python数据结构:实例(Python 3.0+)
#!/usr/bin/python3import json
# Python 字典类型转换为 JSON 对象data1 = {'no' :
1,'name' :
'Runoob','url' :
'http:
//www.k88.net'}json_str = json.dumps(data1)print ("Python 原始数据:", repr(data1))print ("JSON 对象:", json_str)
# 将 JSON 对象转换为 Python 字典data2 = json.loads(json_str)print ("data2['name']:
", data2['name'])print ("data2['url']:
", data2['url'])执行以上代码输出结果为:Python 原始数据: {'name':
'Runoob', 'no':
1, 'url':
'http:
//www.k88.net'}JSON 对象: {"name":
"Runoob", "no":
1, "url":
"http:
//www.k88.net"}data2['name']:
Runoobdata2['url']:
http:
//www.k88.net如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:实例(Python 3.0+)
# 写入 JSON 数据with open('data.json', 'w') as f:
json.dump(data, f)
# 读取数据with open('data.json', 'r') as f:
data = json.load(f)更多资料请参考:https:
//docs.python.org/3/library/json.html
对数据进行编码。json.loads():
对数据进行解码。在json的编解码过程中,python 的原始类型与json类型会相互转换,具体的转化对照如下:Python 编码为 JSON 类型转换对应表:PythonJSONdictobjectlist, tuplearraystrstringint, float, int- & float-derived EnumsnumberTruetrueFalsefalseNonenullJSON 解码为 Python 类型转换对应表:JSONPythonobjectdictarrayliststringstrnumber (int)intnumber (real)floattrueTruefalseFalsenullNonejson.dumps 与 json.loads 实例以下实例演示了 Python 数据结构转换为JSON:实例(Python 3.0+)
#!/usr/bin/python3import json
# Python 字典类型转换为 JSON 对象data = {'no' :
1,'name' :
'Runoob','url' :
'http:
//www.k88.net'}json_str = json.dumps(data)print ("Python 原始数据:", repr(data))print ("JSON 对象:", json_str)执行以上代码输出结果为:Python 原始数据: {'url':
'http:
//www.k88.net', 'no':
1, 'name':
'Runoob'}JSON 对象: {"url":
"http:
//www.k88.net", "no":
1, "name":
"Runoob"}通过输出的结果可以看出,简单类型通过编码后跟其原始的repr()输出结果非常相似。接着以上实例,我们可以将一个JSON编码的字符串转换回一个Python数据结构:实例(Python 3.0+)
#!/usr/bin/python3import json
# Python 字典类型转换为 JSON 对象data1 = {'no' :
1,'name' :
'Runoob','url' :
'http:
//www.k88.net'}json_str = json.dumps(data1)print ("Python 原始数据:", repr(data1))print ("JSON 对象:", json_str)
# 将 JSON 对象转换为 Python 字典data2 = json.loads(json_str)print ("data2['name']:
", data2['name'])print ("data2['url']:
", data2['url'])执行以上代码输出结果为:Python 原始数据: {'name':
'Runoob', 'no':
1, 'url':
'http:
//www.k88.net'}JSON 对象: {"name":
"Runoob", "no":
1, "url":
"http:
//www.k88.net"}data2['name']:
Runoobdata2['url']:
http:
//www.k88.net如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:实例(Python 3.0+)
# 写入 JSON 数据with open('data.json', 'w') as f:
json.dump(data, f)
# 读取数据with open('data.json', 'r') as f:
data = json.load(f)更多资料请参考:https:
//docs.python.org/3/library/json.html
Python3 JSON 数据解析