JSON (JavaScript Object Notation)是 JavaScript 程序编写数据结构的原生方式,它可以将数据格式化,成为可供人阅读的字符串。
Python 的 json 模块可以处理 JSON 格式的数据。但因为 JSON 是 JavaScript 体系,所以只能表示字符串、整型、浮点型、布尔型、列表、字典和 NoneType。
1 JSON 字符串转为 Python 对象
要将包含 JSON 数据的字符串转换为 Python 对象,可以把它传递给 json.loads() 函数,loads 的意思是 load string。
import json
import logging
import os
logging.basicConfig(level=logging.DEBUG, format='%(levelname)s - %(message)s')
'''
处理 JSON
@author Deniro Li
'''
os.chdir('F:/temp/')
# JSON 字符串转为 JSON 对象
json_data_str = ''' {
"id": "/en/45_2006",
"directed_by": [
"Gary Lennon"
],
"initial_release_date": "2006-11-30",
"genre": [
"Black comedy",
"Thriller",
"Psychological thriller",
"Indie film",
"Action Film",
"Crime Thriller",
"Crime Fiction",
"Drama"
],
"name": ".45"
}'''
json_data = json.loads(json_data_str)
logging.info('json_data -> ' + str(json_data))
运行结果:
INFO - json_data -> {'id': '/en/45_2006', 'directed_by': ['Gary Lennon'], 'initial_release_date': '2006-11-30', 'genre': ['Black comedy', 'Thriller', 'Psychological thriller', 'Indie film', 'Action Film', 'Crime Thriller', 'Crime Fiction', 'Drama'], 'name': '.45'}
这个函数会返回为一个 Python 字典,因为 Python 字典没有顺序,所以输出的键-值对可能以不同的顺序出现。不过实测时,发现输出一般会保持原始数据的顺序。
2 Python 对象转为 JSON 字符串
json.dumps()函数可以将一个 Python 对象转换成 JSON 格式的字符串。这里的 dumps 意思是 dump string。
python_value={'id':'/en/45_2006','name':'.45'}
json_value=json.dumps(python_value)
logging.info('json_value -> ' + str(json_value))
运行结果:
INFO - json_value -> {"id": "/en/45_2006", "name": ".45"}