首页 > 编程语言 >python中JSON数据处理

python中JSON数据处理

时间:2023-09-12 16:57:14浏览次数:36  
标签:None python json dumps Python JSON 数据处理

python和json数据类型对应关系

Python JSON
dictionary object
list array
string string
int,float number
boolean(True,False) boolean(true,false)
None null

需要注意的是,Python支持一些JSON不支持的数据类型,如元组(tuple)、集合(set)和字节串(bytes)。因此,在将Python对象序列化为JSON或将JSON反序列化为Python对象时,需要特别注意这些数据类型的不兼容性。

json库常用函数

函数 作用
json.dumps() 将python对象编码成Json格式的字符串
json.loads() 将Json格式的字符串解码成python对象
json.dump() 将python中的对象转化成json储存到文件中
json.load() 将文件中的json的格式转化成python对象提取出来

json.dump()和json.dumps()的区别

json.dumps()函数用于将Python对象编码成JSON格式的字符串。
json.dump()函数用于将Python对象编码成JSON格式并将其写入文件。

json.dumps()用法:

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

  1. obj:就是你要转化成json的对象。
  2. skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型。(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key 。
  3. ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。
  4. check_circular:如果check_circular为false,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误(或更糟的情况)。
  5. allow_nan:如果allow_nan为假,则ValueError将序列化超出范围的浮点值(nan、inf、-inf),严格遵守JSON规范,而不是使用JavaScript等价值(nan、Infinity、-Infinity)。
  6. indent:参数根据数据格式缩进显示,读起来更加清晰。
  7. separators:是分隔符的意思,参数意思分别为不同dict项之间的分隔符和dict项内key和value之间的分隔符,把:和,后面的空格都除去了。
  8. default:default(obj)是一个函数,它应该返回一个可序列化的obj版本或引发类型错误。默认值只会引发类型错误。
  9. sort_keys =True:是告诉编码器按照字典排序(a到z)输出。如果是字典类型的python对象,就把关键字按照字典排序。

示例:

data = {'name': 'John', 'age': 30}
json_str = json.dumps(data)
print(json_str) #{"name": "John", "age": 30}

json.dumps()将Python字典data编码成JSON格式的字符串,并将其存储在变量json_str中。如果遇到python对象有中文时,需要设置ensure_ascii的值,ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。

json.dump()用法:

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

参数解析见json.dumps()

示例:

data = {'name': '张三', 'age': 30}
filename = 'text.txt'
with open(filename, 'w') as f:
    json.dump(obj=data, fp=f)

该代码执行后,会在同级目录下生成text.txt文件,json.dump()将Python字典data编码成JSON格式,并将其写入文件text.txt中。

json.loads()和json.load()的区别

json.loads()方法用于解析JSON格式的字符串。它接受一个字符串作为参数,并返回一个Python对象。
json.load()方法用于读取和解析文件对象中的JSON数据。它接受一个文件对象作为参数,并返回一个Python对象,如字典或列表。

json.loads()用法:

json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

  1. s: 这是一个必需的参数,表示需要解析的 JSON 格式的字符串。
  2. cls: 这是一个可选的参数,用于指定一个自定义的 JSON 解码器类。这个类应该是 json.JSONDecoder 的一个子类。
  3. object_hook: 这是一个可选的参数,用于指定一个自定义的函数,该函数将在解析 JSON 对象时被调用。该函数接收一个 JSON 对象(作为 Python 字典)作为输入,并应返回一个对象,该对象将被包含在最终的解析结果中。
  4. parse_float, parse_int, parse_constant: 这些是可选的参数,用于指定自定义的函数,这些函数将在解析 JSON 数据中的浮点数、整数和常量值时被调用。
  5. object_pairs_hook: 这是一个可选的参数,用于指定一个自定义的函数,该函数将在解析 JSON 对象中的键值对时被调用。该函数接收一个包含键和值的元组作为输入,并应返回一个对象,该对象将被包含在最终的解析结果中。
  6. **kw: 这是一个可选的参数,用于指定一个额外的关键字参数字典,这些参数将被传递给底层的解析函数。

示例:

data = {'name': '张三', 'age': 30}
# 用dumps将python编码成json字符串
json_str = json.dumps(data)
print(json_str) #{"name": "\u5f20\u4e09", "age": 30}

# 用dumps将python编码成json字符串
print(json.loads(json_str))#{'name': '张三', 'age': 30}

json_string是一个包含JSON数据的字符串,json.loads(json_string)会解析字符串并将其转换为Python字典。

json.load()用法:

load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

参数解析见json.loads()

示例:

filename = 'text.txt'
with open(filename, 'r') as f:
    data = json.load(f)
print(data) #{'name': '张三', 'age': 30}

data.json是一个包含JSON数据的文件,json.load(f)会读取文件的内容并将其解析为Python对象。

参考文章:

[python的JSON用法——dumps的各种参数用法(详细)_json.dump_爱吃草莓蛋糕的猴的博客-CSDN博客](

标签:None,python,json,dumps,Python,JSON,数据处理
From: https://www.cnblogs.com/joudys/p/17697142.html

相关文章

  • Python3 XML 解析
    常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同。Python有三种方法解析XML,SAX,DOM,以及ElementTree:1.SAX(simpleAPIforXML)Python标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户......
  • 【Python】python 中 infinity(inf-无穷)
    infpython中的正无穷或负无穷无穷的表示使用float("inf")或float("-inf")来表示。注意:写成:float("inf"),float("INF")或者float('Inf')都是可以的。无穷相关的比较当涉及>和<比较时:所有数都比无穷小float("-inf")大,所有数都比无穷大float("in......
  • python采集数据保存csv, 文件内容乱码了怎么解决?
    如果你的Python程序采集到的数据在保存成CSV格式的文件时出现了乱码,那么可尝试以下解决方法:1.在打开CSV文件时指定编码方式你可以使用Python中的open()函数打开CSV文件,并在open()函数中指定文件编码方式为CSV文件原始编码方式。如果CSV文件原始编码......
  • day七-Python之路 - 面向对象学习编程进阶
    Python之路,Day7-面向对象编程进阶 本节内容:面向对象高级语法部分经典类vs新式类静态方法、类方法、属性方法类的特殊方法反射异常处理Socket开发基础作业:开发一个支持多用户在线的FTP程序面向对象高级语法部分经典类vs新式类把下面代码用python2......
  • python3 pip3 安装python-ldap失败
    pip3安装时提示ERROR:Couldnotbuildwheelsforpython-ldap,uWSGI,M2Crypto,whichisrequiredtoinstallpyproject.toml-basedprojectsERROR:CouldnotbuildwheelsforuWSGI,whichisrequiredtoinstallpyproject.toml-basedprojects需要apt-getinstall......
  • Python 压缩文件夹
    Python压缩文件夹生成测试文件夹可以先使用该脚本生成测试文件夹,也可以直接用自己的文件夹importosimportshutildefmain():shutil.rmtree('AAA')os.makedirs("AAA")os.makedirs("AAA/BBB")os.makedirs("AAA/BBB/EEE")os.makedirs("......
  • Python3 JSON 数据解析
    JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。Python3中可以使用json模块来对JSON数据进行编解码,它包含了两个函数:json.dumps(): 对数据进行编码。json.loads(): 对数据进行解码。在json的编解码过程中,Python的原始类型与json类型会相互转......
  • python中借助列表实现文本转置
     001、[root@pc1test01]#lsa.fatest.py[root@pc1test01]#cata.faATCCGGGCATGGAAGCTTGGATGCATGG[root@pc1test01]#cattest.py#!/usr/bin/envpython3#-*-coding:utf-8-*-in_file=open("a.fa","r")file=in_file.readli......
  • python开发之个微的二次开发
    简要描述:取消消息接收请求URL:http://域名地址/cancelHttpCallbackUrl请求方式:POST请求头Headers:Content-Type:application/json参数:参数名类型说明codestring1000成功,1001失败msgstring反馈信息成功返回示例{"message":"成功","code":"1000","data":......
  • Python爬虫-IP隐藏技术与代理爬取
    在进行爬虫程序开发和运行时,常常会遇到目标网站的反爬虫机制,最常见的就是IP封禁,这时需要使用IP隐藏技术和代理爬取。一、IP隐藏技术IP隐藏技术,即伪装IP地址,使得爬虫请求的IP地址不被目标网站识别为爬虫。通过IP隐藏技术,可以有效地绕过目标网站对于特定IP地址的限制。随机User-Agent......