本文已参与「新人创作礼」活动,一起开启掘金创作之路。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。(作为替代xml文件的强大竞争者)它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
本文主要介绍Python中json包,通过import json导入。
json: 用于字符串和python数据类型间进行转换 json模块提供了四个功能:dumps、dump、loads、load
- dumps把数据类型转换成字符串
- dump把数据类型转换成字符串并存储在文件中
- loads把字符串转换成数据类型
- load把文件打开从字符串转换成数据类型
方法一:dump——一句话完成 转格式+写入文件 功能
dump相当于dumps+file.write两个功能,优点是一条语句解决问题。
常用参数:
| 参数名 | 解释 |
|---|---|
| obj | 要存入json文件的python对象 |
| fp | 文件句柄 |
| ensure_ascii | 设置为False的话才可以把中文以中文的形式存到文件里,否则会是’\xXX\xXX’这种 |
| indent | 缩进的空格数,设置为非零值时,就起到了格式化的效果,比较美观 |
实例:
import json
data = {579:356, 215:382, 338:400}
with open('file.json', 'w') as jsonfile:
json.dump(data, f)
# 文件输出
# {"title":"githubOfFarmertian","name":"farmertian","url":"https://github.com/TLGits","description":"www"}
json.dump(data, f, indent=4)
# 文件输出
# {
# "title":"githubOfFarmertian",
# "title":"farmertian",
# "url":"https://github.com/TLGits",
# "description":"www"
# }
也就是说在使用json.dump()的时候设置一下indent参数的值就好了。可以保证输出的结果格式化。
缺点:如果每一组对应数据都为无排列顺序,无法在dump函数中设置排序,输出的顺序混乱。 ---强迫症患者的做法--见下方:
方法二:dumps——先使用dumps排序,再写入文件
data数据:
data = {579:356, 215:382, 338:400}
现在希望根据key值(即579,215,338)进行data字典的排序并写入json文件。
如果仅采用方法一,输出的结果仍为:(未进行排序)
{
"579":356,
"215":382,
"338":400,
}
解决方案:
使用dumps方法先进行排序和格式化:sort_keys=True,确定排序顺序,indent确定格式化,生成jsonOrderedFile为str类型的数据,然后直接打开文件并写入。
import json
data = {579:356, 215:382, 338:400}
jsonOrderedFile = json.dumps(data, sort_keys=True, indent = 4)
with open('file.json', 'w') as jsonfile:
jsonfile.write(jsonOrderedFile)
输出结果(file.json文件中保存的数据):
{
"215":382,
"338":400,
"579":356,
}
非常完美hhh!!!
如果感觉对你有所帮助,不妨点个赞,关注一波,激励博主持续更新!