Python解析JSON数据的基本方法实例代码
作者:来路与归途 发布时间:2021-02-13 20:40:01
一、JSON数据格式介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
JSON建构于两种结构:json是Javascript中的对象和数组中的对象,本质上来讲就是有特定结构的字符串,所以可以通过这两种结构可以表示各种复杂的结构:
1 对象: 对象在js中表示为”{}”括起来的内容,数据结构为{key:value, key:value…}的键值对结构,在面向对象的语言中,key为对象的属性,value为对应属性的值,所以很容易去理解。属性值value可以为:数字、字符串、数组、对象等。
2 数组:数组在js中是中括号“[]”括起来的内容,数据结构为[“java”, “javascript”, “vb”….] 取值方式和所有语言一样,使用索引获取,字段值的类型是:数字、字符串、数组、对象等
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比”名称 / 值对”更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
按照最简单的形式,可以用下面这样的 JSON 表示 “名称 / 值对” :{ “firstName”: “Brett” }
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。
如:
? ? ?{undefined
? ? ? ? "people":[
? ? ? ? ?{"firstName": "111", ....},
? ? ? ? ?{"firstName": "222",...},
? ? ? ? ?{"firstName": "333",...}
? ? ?]}
二、Python处理JSON数据
Python的json模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps() 和 json.loads()
import json
data={"name":"sunxiaomin","sex":"男","年龄":"26"}
#将python字典类型变成json数据格式
json_str=json.dumps(data)
print(json_str)
print(type(json_str))
#将JSON数据解码为dict(字典)
data1=json.loads(json_str)
print(data1)
print(type(data1))
输出结果:
{"name": "sunxiaomin", "sex": "\u7537", "\u5e74\u9f84": "26"}
<class 'str'>
{'name': 'sunxiaomin', 'sex': '男', '年龄': '26'}
<class 'dict'>
函数详解
使用 JSON 函数需要导入 json 库:import json。
函数 | 描述 |
---|---|
json.dumps | 将 Python 对象编码成 JSON 字符串 |
json.loads | 将已编码的 JSON 字符串解码为 Python 对象 |
json.dumps
json.dumps 用于将 Python 对象编码成 JSON 字符串。
语法
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
1) skipkeys:布尔型,默认为False,如果设为True的话,在dict中的key值如果出现非 (str, unicode, int, long, float, bool, None)对象,则跳过该key而不是抛出 ValueError。
2) indent:非负整数,表示编码后的字符串的缩进方式,默认为None表示无缩进,一般设为4,如果设为0则只会添加换行符。
indent参数根据数据格式缩进显示,读起来更加清晰, indent的值,代表缩进空格式:
3) separators:元组,默认为None,如果设置的话,一般设为(’,’,’:’),表示把’,’和‘:’后面的空格去掉,用来精简输出字符串。
separators参数的作用是去掉‘,’ ‘:’后面的空格,在传输数据的过程中,越精简越好,冗余的东西全部去掉。
4) sort_keys: 布尔型,默认为False,如果设为True,则输出的dict会按照key值排序。
sort_keys是告诉编码器按照字典key排序(a到z)输出
5) 输出真正的中文需要指定ensure_ascii=False
如果无任何配置,或者说使用默认配置,
输出的会是‘凉凉’的ASCII字符吗,而不是真正的中文。
这是因为json.dumps 序列化时对中文默认使用的ascii编码。
json.loads 语法
json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
Python 编码为 JSON 类型转换对应表:
Python | JSON |
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
JSON 解码为 Python 类型转换对应表:
JSON | Python |
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
来源:https://blog.csdn.net/qq_42233538/article/details/86767629
猜你喜欢
- asp生成wbmp代码如下: <%@ Language=VBScript %><%Funct
- 题目:转换RBG颜色值我们知道在网页中的颜色值设置都是用16进制的RGB来表示的,比如#FFFFFF,表示R:255,G:255,B:255
- 一、python批量解压提示:如果是重要数据解压前请先备份,解压后会覆盖原压缩文件!!解压前:解压后:文件名为英文:文件名中包含中文:代码如
- 以下是几个文件操作过程,创建文件,删除文件,修改文件:
- 文中涉及的示例代码,已同步更新到HelloGitHub-Team 仓库在上一篇教程中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十
- Python字符串问题在arcpy中版本为 python2.x在QGIS中版本为 python2.x 或者 python3.xpython2
- 1、字典中的键存在时,可以通过字典名+下标的方式访问字典中改键对应的值,若键不存在则会抛出异常。如果想直接向字典中添加元素可以直接用字典名+
- 官方实现golang 1.8 及以上版本提供了一个创建共享库(shared object)的新工具,称为 Plugins。目前 Plugin
- 1:listWidget 以滚动窗口显示文件下的所有文件: self.listWidget = QtWidget
- 我们通过python-nmap实现一个高效的端口扫描工具,与定时作业crontab及邮件告警结合,可以很好的帮助我们及时发现异常开放的高危端
- 摘要:近几天在做一个东西,其中需要对图像中的文字进行识别,看了前辈们的文章,找到两个较简单的方法:使用python的pytesseract库
- 1、安装所需工具pip install pipreqs2、进入到python项目主目录pipreqs ./3、完成上面命令会生成requir
- 为你的网站,博客等添加rss聚合功能,给出rss.asp和rss.xml两种的聚合代码看过的朋友可帮忙顶哦,这些代码都是第一次发的,外面很多
- 本文安装的是pytorch1.4版本(cpu版本)首先需要安装Anaconda是否需要安装基于cuda的PyTorch版本呢?对于普通笔记本
- 请问如何在ASP中使用ADO调用Oracle的存储过程?我们可以在下面的代码里使用微软Oracle 的OLE DB Provider ,包括
- 由于系统自带的MySQL默认字符集不是gbk,因此给数据库的推广应用以及中文程序的开发带来极大的不便,在没完没了的GBK和UTF8的转换过程
- 1 Tenacity描述今天 给大家介绍一个Python 重试库,Tenacity 这个库 是我 这些年 使用的一个非常好的库,几乎满足了我
- 本文实例讲述了PHPExcel冻结(锁定)表头的简单实现方法。分享给大家供大家参考,具体如下:PHPExcel是一款功能比较强大的操作微软e
- vbscript脚本中,fso对象CreateTextFile方法调用时可能会报“无效的过程调用或参数”错误,在使用ASP生成静态页面时,如
- 今天抽空学习了一下之前了解过的pillow库,以前看到的记得这个库可以给图片上加文字加数字,还可以将图片转化成字符画,不过一直没有找时间去学