当前位置: 首页 > wzjs >正文

中铁四局建筑公司网站东莞网络营销平台

中铁四局建筑公司网站,东莞网络营销平台,郑州大型网站建设,做视频网站公司要怎么做文章目录 1 函数介绍2 json.load()2.1 语法格式2.2 异常说明2.3 返回值说明2.4 注意事项2.5 示例2.5.1 示例数据2.5.2 基本用法2.5.3 自定义解析 3 json.loads()3.1 语法格式3.2 返回值说明3.3 注意事项3.4 示例3.4.1 基本用法3.4.2 自定义解析3.4.3 网络请求 4 json.dump()4.1…

文章目录

  • 1 函数介绍
  • 2 json.load()
    • 2.1 语法格式
    • 2.2 异常说明
    • 2.3 返回值说明
    • 2.4 注意事项
    • 2.5 示例
      • 2.5.1 示例数据
      • 2.5.2 基本用法
      • 2.5.3 自定义解析
  • 3 json.loads()
    • 3.1 语法格式
    • 3.2 返回值说明
    • 3.3 注意事项
    • 3.4 示例
    • 3.4.1 基本用法
    • 3.4.2 自定义解析
      • 3.4.3 网络请求
  • 4 json.dump()
    • 4.1 语法格式
    • 4.2 返回值说明
    • 4.3 注意事项
    • 4.4 示例
      • 4.4.1 基本用法
      • 4.4.2 自定义化序列
  • 5 json.dumps()
    • 5.1 语法格式
    • 5.2 返回值说明
    • 5.3 注意事项
    • 5.4 示例
      • 5.4.1 基本用法
      • 5.4.2 自定义序列化


1 函数介绍

函数名称函数描述
json.load()用于从文件对象中读取 JSON 数据,并将其解析为 Python 对象。
json.loads()用于将JSON 格式的字符串解析为 Python 对象
json.dump()用于将 Python 对象序列化为 JSON 格式,并将其写入文件
json.dumps()用于将 Python 对象序列化为JSON 格式的字符串

2 json.load()

json.load()是Python中json模块提供的一个函数,用于从文件对象中读取JSON数据,并将其解析为Python对象。

2.1 语法格式

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

参数说明:

fp: 一个包含要执行反序列化的 JSON 文档的支持.read()的 text file 或 binary file。
cls: 如果设定此参数,则使用自定义的JSON解码器。任何传递给load()方法的多余关键字参数都会被传递给cls的构造器。如果传入None(默认值),则会使用JSONDecoder
object_hook: 可选函数,如果设置,将是一个在调用时以任意被解码的对象字面值(即一个dict)作为参数的函数。该函数的返回值将代替该dict使用。此特性可被用于实现自定义解码器,例如JSON-RPC类提示。默认值为None。
parse_float: 可选函数,如果设置,将是一个在调用时以代表每个要解码的JSON浮点数的字符串作为参数的函数。如为None(默认值),则它等价于float(num_str)。这可被用于将JSON浮点数解析为自定义数据类型,例如decimal.Decimal。
parse_int: 可选函数,如果设置,将是一个在调用时以代表每个要解码的JSON整数的字符串作为参数的函数。如为None(默认值),则它等价于int(num_str)。这可被用于将JSON整数解析为自定义数据类型,例如float。
parse_constant: 可选函数,如果设置,将是一个以下列字符串之一作为参数的函数: -Infinity, InfinityNaN。 这可被用于在遇到无效的 JSON 数字时引发异常。 默认值为 None。
object_pairs_hook: 可选函数,如果设置,将是一个在调用时以对照值的有序列表进行解码的任意对象字面值作为参数的函数。该函数的返回值将代替该dict使用。此特性可被用于实现自定义解码器。如果还设置了object_hook,则object_pairs_hook的优先级更高,默认值为None。

2.2 异常说明

JSONDecodeError: 当被反序列化的数据不是合法的JSON文档。
UnicodeDecodeError: 当被反序列化的数据不包含UTF-8,UTF-16UTF-32编码的数据。

2.3 返回值说明

json.load()返回一个Python对象,具体类型取决于JSON文件的内容:

JSON对象({})会被解析为Python的dict
JSON数组([])会被解析为Python的list
JSON字符串("...")会被解析为Python的str
JSON数字(123或12.3)会被解析为Python的intfloat
JSON的truefalsenull会被解析为Python的TrueFalseNone

2.4 注意事项

文件编码: 在打开文件时,确保指定正确的编码(如utf-8),否则可能会因编码问题导致解析失败。
文件路径: 确保文件路径正确,否则会抛出FileNotFoundError异常。
JSON格式必须正确: 如果JSON文件格式不正确(如缺少引号、括号不匹配等),会抛出json.JSONDecodeError异常。
性能问题: 对于非常大的JSON文件,json.load()会将整个文件加载到内存中。如果内存有限,可以考虑使用流式解析工具(如ijson)。

2.5 示例

2.5.1 示例数据

data.json文件内容如下:

{"name": "辰南","age": 10028.26,"skill": ["唤魔经", "太上忘情录", "通天动地魔功"]
}

2.5.2 基本用法

import json# 打开文件并读取JSON数据
with open('data.json', 'r', encoding='utf-8') as f:data = json.load(f)print(data) # {'name': '辰南', 'age': 10028, 'skill': ['唤魔经', '太上忘情录', '通天动地魔功']}
print(type(data)) # <class 'dict'>

2.5.3 自定义解析

import jsondef custom_parse_float(value):"""自定义浮点数解析函数:param value:传入浮点数:return:返回保留一位小数的值"""return round(float(value), 1)  # 保留一位小数# 打开文件并读取 JSON 数据
with open('data.json', 'r', encoding='utf-8') as f:data = json.load(f, parse_float=custom_parse_float)print(data)  # {'name': '辰南', 'age': 10028.3, 'skill': ['唤魔经', '太上忘情录', '通天动地魔功']}

3 json.loads()

json.loads()是Python中json模块提供的一个函数,用于将JSON格式的字符串解析为Python对象。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于数据传输和配置文件。

3.1 语法格式

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

类似于load(),但不是针对文件型对象,而是使用这个转换表将s(一个包含JSON的str,bytesbytearray实例)反序列化为Python对象。

3.2 返回值说明

json.loads()返回一个Python对象,具体类型取决于JSON文件的内容:

JSON对象({})会被解析为Python的dict
JSON数组([])会被解析为Python的list
JSON字符串("...")会被解析为Python的str
JSON数字(123或12.3)会被解析为Python的intfloat
JSON的truefalsenull会被解析为Python的TrueFalseNone

3.3 注意事项

JSON字符串必须符合格式: 如果JSON字符串格式不正确(如缺少引号、括号不匹配等),会抛出json.JSONDecodeError异常。
性能问题: 对于非常大的JSON数据,建议使用json.load()从文件流中读取,而不是一次性加载到内存中。

3.4 示例

3.4.1 基本用法

import json# JSON 格式的字符串
json_str = '{"name": "辰南", "age": 10028.3, "skill": ["唤魔经", "太上忘情录", "通天动地魔功"]}'# 解析为 Python 字典
data = json.loads(json_str)print(data) # {'name': '辰南', 'age': 10028.3, 'skill': ['唤魔经', '太上忘情录', '通天动地魔功']}
print(type(data)) # <class 'dict'>

3.4.2 自定义解析

import json# JSON 格式的字符串
json_str = '{"name": "辰南", "age": 10028.26, "skill": ["唤魔经", "太上忘情录", "通天动地魔功"]}'# 自定义浮点数解析函数
def custom_parse_float(value):"""自定义浮点数解析函数:param value:传入浮点数:return:返回保留一位小数的值"""return round(float(value), 1)  # 保留一位小数# 解析 JSON 字符串
data = json.loads(json_str, parse_float=custom_parse_float)print(data) # {'name': '辰南', 'age': 10028.3, 'skill': ['唤魔经', '太上忘情录', '通天动地魔功']}
print(type(data))  # <class 'dict'>

3.4.3 网络请求

import requests
import json# 字典类型的表单参数
data = {'辰南': '从神墓爬出来','楚月': '辰南老婆之一'}
# 发送网络请求
res = requests.post('http://httpbin.org/post', data=data)
res_dict = json.loads(res.text)  # 将响应数据转换为字典类型
print(res_dict)
print(type(res_dict))

4 json.dump()

json.dump()是Python中json模块提供的一个函数,用于将Python对象序列化为JSON格式,并将其写入文件。与json.dumps()不同,json.dump()直接将数据写入文件对象,而不是返回一个字符串。

4.1 语法格式

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)

参数说明:

obj: 要序列化的Python对象。
fp: 文件型对象obj将为序列化输出的目标。json模块总是产生str对象,而不是bytes对象,因此fp.write()必须支持str输入
skipkeys: 如为True,则不为基本类型(str,int,float,bool,None)的键将被跳过而不会引发TypeError。默认为False。
ensure_ascii: 如为True(默认值),则输出将保证对所有输入的非ASCII字符进行转义。如为False,这些字符将被原样输出。
check_circular: 如为False,则对容器类型的循环引用检查会被跳过并且循环引用将导致RecursionError(或更糟的情况)。默认为True。
allow_nan: 如为False,则对超范围的float值(nan,inf,-inf)进行序列化将导致ValueError,以严格遵循JSON规范。如为True(默认值),则将使用它们的JavaScript等价形式(NaN,Infinity,-Infinity)。
cls: 如果设置,则重写为一个带有default()方法的自定义JSON编码器,用以序列化为自定义的数据类型。如为None(默认值),则使用JSONEncoder。
indent: 如为一个正整数或字符串,JSON数组元素和对象成员将按其所指定的缩进层级美化打印。正整数表示每级缩进指定数量的空格;字符串(如"\t")则被用于每级缩进。如为零、负数或""(空字符串),则仅插入换行符。如为None(默认值),则使用最紧凑表示形式。
separators: 一个二元组:(item_separator,key_separator)。如为None(默认值),则默认当indent为None时separators为(',',':'),否则为(',',':')。要使用最紧凑形式的JSON,可指定(‘,’,‘:’)来去除空格。
default: 当对象无法被序列化时将被调用的函数。它应该返回一个可被JSON编码的版本或是引发TypeError。如为None(默认值),则会引发TypeError。
sort_keys: 如为True,则字典输出将按键排序。默认为False。

4.2 返回值说明

json.dump() 没有返回值,它会将序列化后的 JSON 数据直接写入文件。

4.3 注意事项

文件模式: 在打开文件时,确保使用写入模式(如'w'),否则会抛出错误。
非字符串键: 如果字典的键不是字符串类型,默认会抛出TypeError。可以通过设置skipkeys=True跳过这些键。
特殊值: 默认情况下,NaN、Infinity等特殊值可以被序列化。如果不需要,可以设置allow_nan=False。
性能问题: 对于非常大的数据,json.dump()会将整个对象加载到内存中。如果内存有限,可以考虑使用流式写入工具。

4.4 示例

4.4.1 基本用法

import json# Python 字典
data = {"name": "辰南","age": 10028.26,"skill": ["唤魔经", "太上忘情录", "通天动地魔功"]
}# 打开文件并写入 JSON 数据
with open('output.json', 'w', encoding='utf-8') as f:json.dump(data, f)

4.4.2 自定义化序列

如果 Python 对象中包含无法直接序列化的类型(如 datetime),可以使用default参数指定一个处理函数:

import json
from datetime import datetimedef custom_serializer(obj):"""自定义序列化函数:param obj::return:"""# 判断数据是否为日期if isinstance(obj, datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')  # 将 datetime 转换为字符串raise TypeError("Type not serializable")# Python 字典,包含 datetime 对象
data = {"name": "辰南","age": 10028.26,"skill": ["唤魔经", "太上忘情录", "通天动地魔功"],"created": datetime.now()
}# 打开文件并写入 JSON 数据
with open('output.json', 'w', encoding='utf-8') as f:json.dump(data, f, default=custom_serializer, indent=4, ensure_ascii=False)

5 json.dumps()

json.dumps()是Python中json模块提供的一个函数,用于将Python对象序列化为JSON格式的字符串。与json.dump()不同,json.dumps()返回一个字符串,而不是直接写入文件。

5.1 语法格式

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)

使用这个转换表将obj序列化为JSON格式的str。其参数的含义与dump()中的相同。

5.2 返回值说明

json.dumps() 返回一个 JSON 格式的字符串。

5.3 注意事项

非字符串键: 如果字典的键不是字符串类型,默认会抛出TypeError。可以通过设置skipkeys=True跳过这些键。
特殊值: 默认情况下,NaN、Infinity等特殊值可以被序列化。如果不需要,可以设置allow_nan=False。
编码问题: 如果ensure_ascii=True(默认),所有非ASCII字符会被转义为\uXXXX格式。如果希望保留原始字符,可以设置ensure_ascii=False。
性能问题: 对于非常大的数据,json.dumps()会将整个对象加载到内存中。如果内存有限,可以考虑使用流式处理工具。

5.4 示例

5.4.1 基本用法

import json# Python 字典
data = {"name": "辰南","age": 10028.26,"skill": ["唤魔经", "太上忘情录", "通天动地魔功"]
}# 序列化为 JSON 字符串
json_str = json.dumps(data,ensure_ascii=False)print(json_str) # {"name": "辰南", "age": 10028.26, "skill": ["唤魔经", "太上忘情录", "通天动地魔功"]}

5.4.2 自定义序列化

如果 Python 对象中包含无法直接序列化的类型(如 datetime),可以使用default参数指定一个处理函数:

import json
from datetime import datetimedef custom_serializer(obj):"""自定义序列化函数:param obj::return:"""if isinstance(obj, datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')  # 将 datetime 转换为字符串raise TypeError("Type not serializable")# Python 字典,包含 datetime 对象
data = {"name": "辰南","age": 10028.26,"skill": ["唤魔经", "太上忘情录", "通天动地魔功"],"created": datetime.now()
}# 序列化为 JSON 字符串,indent:美化,ensure_ascii:输出中文,sort_keys:排序
json_str = json.dumps(data, default=custom_serializer, indent=4, ensure_ascii=False, sort_keys=True)print(json_str)
http://www.dtcms.com/wzjs/515845.html

相关文章:

  • 环境网站模板产品推广运营的公司
  • 自己做企业网站sem广告
  • 广西网站建设开发团队百度推广业务电话
  • 如何做美女图片网站my77728域名查询
  • 门户网站制作培训心得体会2000字
  • 网站建设征求意见的通知如何自制网站
  • 上海建设网站公司在线培训平台
  • 什么网站做企业邮箱服务搜索优化seo
  • 网站建设公司怎么选优化网站怎么真实点击
  • 公司黄页企业名录在哪里查北京seo顾问外包
  • 好看的网站都找谁做的seo网络推广知识
  • 长沙人才招聘网站sem模型
  • 西安市住房和城乡建设局官方网站深圳十大网络推广公司排名
  • 科技成果转化平台seo自然排名关键词来源的优缺点
  • 青岛需要做网站的公司如何让自己的网站排名靠前
  • 好看的创意网站设计百度网址安全中心怎么关闭
  • 成品网站建设咨询短视频seo询盘获客系统
  • 卡盟网站制作教程青岛seo关键词
  • 网站百度搜索情况和反链接优化建议seo联盟
  • 建设营销型网站不足之处收录
  • wordpress get_the_category_listseo案例分析及解析
  • mugeda做网站江苏关键词推广seo
  • 做外贸是自建网站好还是b2b好杭州seo靠谱
  • ps网站背景图片怎么做自动app优化官网
  • 网站建设 落地页安卓优化大师手机版下载
  • 电子商务网站开发的视频市场营销策划案例经典大全
  • 做网站前端用什么软件好seo关键词有话要多少钱
  • 家具定制东莞网站建设十大软件免费下载网站排行榜
  • 别人做的网站怎么安全放在我的公司站长工具在线免费
  • 温州手机网站建设品牌推广的概念