Python解析JSON数据的基本方法实例代码

 更新时间:2022年01月28日 09:08:48   作者:来路与归途  
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,下面这篇文章主要给大家介绍了关于Python解析JSON数据的基本方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一、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 类型转换对应表:

PythonJSON
dictobject
list, tuplearray
strstring
int, float, int- & float-derived Enumsnumber
Truetrue
Falsefalse
Nonenull

JSON 解码为 Python 类型转换对应表:

JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone

总结

到此这篇关于Python解析JSON数据的基本方法的文章就介绍到这了,更多相关Python解析JSON数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈python中的getattr函数 hasattr函数

    浅谈python中的getattr函数 hasattr函数

    下面小编就为大家带来一篇浅谈python中的getattr函数 hasattr函数。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Python处理数据之匹配两个Excel文件数据的实现方法

    Python处理数据之匹配两个Excel文件数据的实现方法

    这篇文章主要给大家介绍了关于Python处理数据之匹配两个Excel文件数据的实现方法,可以使用Python的Pandas库来实现两层循环匹配两个Excel文件,需要的朋友可以参考下
    2023-09-09
  • tensorflow 加载部分变量的实例讲解

    tensorflow 加载部分变量的实例讲解

    今天小编就为大家分享一篇tensorflow 加载部分变量的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • centos 自动运行python脚本和配置 Python 定时任务

    centos 自动运行python脚本和配置 Python 定时任务

    这篇文章主要介绍了centos 自动运行python脚本和配置 Python 定时任务,文章内容介绍详细,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-03-03
  • Python可变参数*args和**kwargs

    Python可变参数*args和**kwargs

    本文我们将通过示例了解 Python函数的可变参数*args和 **kwargs的用法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python使用openpyxl模块处理Excel文件

    Python使用openpyxl模块处理Excel文件

    这篇文章介绍了Python使用openpyxl模块处理Excel文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • python接入支付宝的实例操作

    python接入支付宝的实例操作

    在本篇文章里小编给大家整理的是一篇关于python接入支付宝的实例操作内容,需要的朋友们可以学习下。
    2020-07-07
  • Python sns.distplot()方法的使用方法

    Python sns.distplot()方法的使用方法

    机器学习中经常会用到图形进行可视化,如在网格搜索(GridSearch)后对特征的重要性进行排序时,用到sns.barplot()函数按照重要程度输出特征,这篇文章主要给大家介绍了关于Python sns.distplot()方法的使用方法,需要的朋友可以参考下
    2022-03-03
  • 解决Python正则表达式匹配反斜杠''''\''''问题

    解决Python正则表达式匹配反斜杠''''\''''问题

    这篇文章主要介绍了Python正则表达式匹配反斜杠'\'问题 ,很多朋友在使用python 正则式的过程中,经常被这个问题困扰,今天小编通过代码给大家详细介绍,需要的朋友可以参考下
    2019-07-07
  • keras 读取多标签图像数据方式

    keras 读取多标签图像数据方式

    这篇文章主要介绍了keras 读取多标签图像数据方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论