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. dotnet 控制台读写 Sqlite 提示 no such table 找不到文件

    在使用 dotnet 读写 Sqlite 可以通过 EF Core 的方法,但是在 EF Core 创建的数据库可能和读写的数据库不是相同的文件 在我运行代码的时候发现在通过迁移创建数据库,创建的文件 ...

  2. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  3. struts2生成随机验证码图片

    之前想做一个随机验证码的功能,自己也搜索了一下别人写的代码,然后自己重新用struts2实现了一下,现在将我自己实现代码贴出来!大家有什么意见都可以指出来! 首先是生成随机验证码图片的action: ...

  4. Spring Boot 嵌入式Web容器

    目录 前言 1.起源 2.容器启动流程解析 2.1.获取应用类型 2.2.容器启动流程 3.加载 Web 容器工厂 4.总结 前言         最近在学习Spring Boot相关的课程,过程中以 ...

  5. python入门之字符串的魔法

    1.test="alex" v=test.capitalize() print(v)               //输出结果首字母大写 2.test1="alex&qu ...

  6. 洛谷$P2050\ [NOI2012]$美食节 网络流

    正解:网络流 解题报告: 传送门$QwQ$ 昂开始看到$jio$得,哇长得好像上一题嗷$QwQ$ 然后仔细康康数据范围,发现,哇好像要几万个点,,,显然就$GG$了 但感$jio$思路方向好对的亚子? ...

  7. Spring Boot入门(一)

    Spring Boot入门 一.第一个Spring Boot程序 1.导入springBoot 依赖 <parent> <groupId>org.springframework ...

  8. # Okhttp解析—Interceptor详解

    Okhttp解析-Interceptor详解 Interceptor可以说是okhttp的精髓之一,Okhttp重写请求/响应.重试.缓存响应等操作,基本都是在各个Interceptor中完成的,上篇 ...

  9. 曹工说Spring Boot源码(8)-- Spring解析xml文件,到底从中得到了什么(util命名空间)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  10. 常见的sql注入环境搭建

    常见的sql注入环境搭建 By : Mirror王宇阳 Time:2020-01-06 PHP+MySQL摘要 $conn = new mysqli('数据库服务器','username','pass ...