JSON (JavaScript Object Notation)是一种使用广泛的轻量数据格式,Python标准库中的json模块提供了一种简单的方法来编码和解码JSON格式的数据。用于完成字符串和python数据类型间进行转换。

json模块基本函数

  json.dumps():把Python数据类型转换成JSON字符串

  json.loads():把JSON字符串转换成Python数据类型

  json.dump():把Python数据类型转换成JSON字符串并存储在文件中

  json.load():把文件打开并将JSON字符串转换成Python数据类型

说明:使用 JSON 函数需要导入 json 库:import json

json模块使用实例

1、将python中的字典转换为JSON字符串。说明:转换后的JSON字符串都是放在双引号中。

>>> import json
>>> student_dic = {'name':'ACME', 'age':'', 'grade' : ''}
>>> json_data = json.dumps(student_dic)
>>> type(json_data)
<class 'str'>
>>> print(json_data)
{"name": "ACME", "age": "", "grade": ""}

2、将JSON字符串转换为Python字典。说明:字符串必须放在双引号中,否则会报错。

>>> tran_data = json.loads(json_data)
>>> type(tran_data)
<class 'dict'>
>>> print(tran_data)
{'name': 'ACME', 'age': '', 'grade': ''}

3、将Python字典类型数据写入json文件中

>>> import json
>>> student_dic = {'name':'ACME', 'age':'', 'grade' : ''}
>>> with open('json.txt','w') as f:
... json.dump(student_dic,f)
...
>>>

查看json.txt文件内容,如下:

d:\pycharm>type json.txt
{"name": "ACME", "age": "", "grade": ""}

说明:type为dos命令,作用是查看文件内容。

4、读取JSON文件,并把字符串变换为Python数据字典

>>> with open('json.txt','r') as fr:
... student_dict = json.load(fr)
...
>>> type(student_dict)
<class 'dict'>
>>> print(student_dict)
{'name': 'ACME', 'age': '', 'grade': ''}

5、将Python字典类型转换为JSON字符串,并以指定格式输出。

>>> import json
>>> student_dic = {'name':'ACME', 'age':'', 'grade' : ''}
>>> json_data = json.dumps(student_dic,indent=4)
>>> print(json_data)
{
"name": "ACME",
"age": "",
"grade": ""
}

6、将Python字典类型转换为JSON字符串,并按键排序输出。

>>> json_data = json.dumps(student_dic,sort_keys=True,indent=4)
>>> print(json_data)
{
"age": "",
"grade": "",
"name": "ACME"
}

7、Python基本类型转换为JSON字符串的特殊变化。

>>> spec_value_dict = {'a':True,'b':False,'c':None}
>>> json_data = json.dumps(spec_value_dict,indent=4)
>>> print(json_data)
{
"a": true,
"b": false,
"c": null
}
>>>

说明:Python中的True转换为true,False转化为false,None转换为null。使用loads将JSON类型转换后还原,如下:

>>> json.loads(json_data)
{'a': True, 'b': False, 'c': None}

小结

本文仅是描述了Python基本类型与JSON字符串间转换的基本使用方法。对于JSON编解码更多功能使用可以阅读官方文档获取:https://docs.python.org/3/library/json.html

[ Python入门教程 ] Python中JSON模块基本使用方法的更多相关文章

  1. [ PyQt入门教程 ] PyQt5中多线程模块QThread使用方法

    本文主要讲解使用多线程模块QThread解决PyQt界面程序唉执行耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题.用户使用工具过程中出现这些问题时会误以为程序出错,从而把程序关闭.这样 ...

  2. [ Python入门教程 ] Python中日期时间datetime模块使用实例

    Python中datetime模块提供强大易用的日期处理功能,用于记录程序操作或修改时间.时间计算.日志时间显示等功能.datatime模块重新封装了time模块,提供的类包括date.time.da ...

  3. boost.python入门教程 ----python 嵌入c++

    Python语言简介 Python是一种脚本语言.以开放的开发接口和独特的语法著称.尽管Python在国内引起注意只有几年的时间,但实际上Python出现于上世纪90年代(据www.python.or ...

  4. [ Python入门教程 ] Python字典数据类型及基本操作

    字典是Python中重要的数据类型,字典是由"键-值"对组成的集合,"键-值"对之间用逗号隔开,包含在一对花括号中.字典中的"值"通过&qu ...

  5. [ Python入门教程 ] Python中日志记录模块logging使用实例

    python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到 ...

  6. [ Python入门教程 ] Python文件基本操作_shutil模块

    shutil模块是对os模块中文件操作的补充,提供文件和目录的移动.复制.打包.压缩.解压等功能 shutil常用函数   shutil.copyfile(src, dst)   复制文件, 如果ds ...

  7. [ Python入门教程 ] Python生成随机数模块(random)使用方法

    1.使用randint(a,b)生成指定范围内的随机整数.randint(a,b)表示从序列range([a,b])中获取一个随机数,包括b. >>> random.randint( ...

  8. [ Python入门教程 ] Python基础语法

    Python的语法非常简练,因此用Python编写的程序可读性强.容易理解.本章将介绍Python的基本语法和概念. Python文件类型 1.源代码.Python的源代码的扩展名以py结尾,可直接运 ...

  9. [ Python入门教程 ] Python的控制语句

    Python控制语句由条件语句.循环语句构成.控制语句根据条件表达式控制程序的流转.本章将介绍Python中控制语句的基本语法. 条件判断语句 (1)if条件语句 if语句用于检测某个条件是否成立.如 ...

随机推荐

  1. Educational Codeforces Round 61

    Educational Codeforces Round 61 今早刚刚说我适合打pikmike出的EDU 然后我就挂了 A 不管 B 不管 C 这道题到快结束了才调出来 大概就是\(n^2\)枚举不 ...

  2. C语言中的优先级和类型转换分析

    一.优先级 1.易错的优先级 二.类型转换 在C语言中,存在强制类型装换,也存在隐式类型转换,隐式类型转换实际上属于强制类型转换,隐式类型转换要点如图. (1)举例:算术运算式中,低类型转换为高类型 ...

  3. POJ 1166 The Clocks [BFS] [位运算]

    1.题意:有一组3*3的只有时针的挂钟阵列,每个时钟只有0,3,6,9三种状态:对时针阵列有9种操作,每种操作只对特点的几个时钟拨一次针,即将时针顺时针波动90度,现在试求从初试状态到阵列全部指向0的 ...

  4. Linux基础:Linux下常用命令

    常用命令 shutdown ​ 用来系统关机命令.shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作. ​ shutdown (选项)(参数) -c: 当执行"s ...

  5. 用Tasker实现收到Android手机短信自动转发到邮箱

    发送短信到邮箱的原理与 <用Tasker实现收到Android手机短信自动转发到邮箱>有些类似.  发送短信到邮箱是利用Ifttt这个服务将短信转发到邮箱中.Ifttt服务的可扩展性很强, ...

  6. ArrayList中删除null元素效率比较

    package test; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; i ...

  7. 使用vue-quill-editor富文本 实现图片上传

    1. 下载并引入 import { quillEditor, Quill } from "vue-quill-editor"; import { container, ImageE ...

  8. 让Antd Modal变成可拖动弹窗

    思路: 1.首先需要两个DIV,一个是和视口一样大drag-mask,绑定mouseMove事件和mouseUp事件,另一个是和Modal一样大的drag-target,绑定mouseDown事件: ...

  9. 【转】在NetBeans上搭建Android SDK环境

    本文将介绍在NetBeans 6.8上搭建Android SDK环境,目前Android在Netbeans上进行开发需要借助nbandroid的平台插件. 我们刚刚介绍过<MyEclipse上搭 ...

  10. JS获取时间戳的几种方法与区别

    var today = new Date() Date.now()) Date.parse(today) today.valueOf()) today.getTime() 可以看出,第二种是精确到秒的 ...