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

搬家公司网站建设价格画册设计公司收费

搬家公司网站建设价格,画册设计公司收费,快乐十分网站开发,网络营销策划方案ppt模板Python中的JSON工具库 普通玩家#xff1a;json与simplejson1、json2、simplejson 高性能玩家#xff1a;orjson、ujson与rapidjson1、性能 PK#xff08;序列化与反序列化#xff09;2、基本使用 PK#xff08;序列化与反序列化#xff09; Python对JSON非常友好#x… Python中的JSON工具库 普通玩家json与simplejson1、json2、simplejson 高性能玩家orjson、ujson与rapidjson1、性能 PK序列化与反序列化2、基本使用 PK序列化与反序列化 Python对JSON非常友好很多时候dict类型在形式上看起来就是JSON而内置的json库通过loads()和dumps()两组方法恰当好处地将两者合二为一以至于绝大多数时候没有必要去考虑引入一个新的方式来处理JSON。当然Python社区是不会满足于大多数情况的本文将从大多数情况的使用开始介绍一下Python中各种优秀的JSON工具库。 普通玩家json与simplejson 1、json json是Python内置标准库开箱即用。json库也非常简单就两组序列化编码、反序列化解码方法下面我们来详细介绍它的使用。 基本使用 Python对象与JSON字符串的互相转化 data {name: Alice, age: 30, is_active: True}# json.dumps将 Python 对象转为 JSON 字符串 json_str json.dumps(data) print(json_str) # {name: Alice, age: 30, is_active: true}# json.loads将JSON 字符串转为 Python 对象 parsed json.loads(json_str) print(parsed[name]) # Alice以下是Python 类型与JSON 类型的转化对照注意json 库无法直接处理datetime, Decimal, UUID 等常用内建类型以及自定义类对象。 Python 类型JSON 类型dictobjectlist, tuplearraystrstringint, floatnumberTrue / Falsetrue / falseNonenull JSON文件的读取与写入 #json.dump写入 JSON 到文件 with open(data.json, w, encodingutf-8) as f:json.dump(data, f, indent2)#json.load从文件读取 JSON with open(data.json, r, encodingutf-8) as f:loaded json.load(f) print(loaded[age]) # 30注意json 库处理超大 JSON 文件时如 GB 级json.load() 会一次性读取内存效率低甚至崩溃。 进阶使用 通过配置参数来优化输出JSON字符串 json.dumps(obj, *, skipkeysFalse, ensure_asciiTrue, indentNone, sort_keysFalse)具体参数说明 参数名说明indent2美化输出缩进sort_keysTrue字典按 key 排序输出ensure_asciiFalse输出非 ASCII 字符如中文defaultfunction自定义无法序列化对象的处理方式 使用 default 参数实现自定义对象的支持 from datetime import datetimeclass User:def __init__(self, name):self.name nameself.created datetime.now()u User(Alice)def encode_user(obj):if isinstance(obj, User):return {name: obj.name, created: obj.created.isoformat()}if isinstance(obj, datetime):return obj.isoformat()raise TypeError(Not serializable)print(json.dumps(u, defaultencode_user, indent2))2、simplejson simplejson 是 Python 的一个第三方 JSON 库是标准库 json 的超集提供更强大的功能与兼容性。它最初就是标准库 json 的前身所以用法非常相似但提供了更多扩展选项如精度控制、Decimal 支持、自定义编码等。 安装 pip install simplejson基本使用 simplejson也包含了loads\load,dumps\dump两组序列化编码、反序列化解码方法且使用方法与内置的json库一模一样在此不再赘述。 进阶使用 使用 Decimal 类型simplejson支持Decimal类型的序列化与反序列化 from decimal import Decimaldata {price: Decimal(19.99)}# 支持 Decimal不会强制转 float json_str json.dumps(data, use_decimalTrue) print(json_str) # {price: 19.99}# 正确解析为 Decimal parsed json.loads(json_str, use_decimalTrue) print(type(parsed[price])) # class decimal.Decimal使用参数simplejson中支持更加灵活的参数配置 json.dumps(obj,skipkeysFalse,ensure_asciiTrue,check_circularTrue,allow_nanTrue,clsNone,indentNone,separatorsNone,defaultNone,use_decimalTrue,namedtuple_as_objectTrue,tuple_as_arrayTrue,bigint_as_stringFalse,sort_keysFalse )自定义对象序列化如果对象实现了 .for_json() 方法simplejson 会自动调用它 class User:def __init__(self, name):self.name namedef for_json(self):return {user: self.name}user User(Alice) print(json.dumps(user)) # {user: Alice}高性能玩家orjson、ujson与rapidjson 对于高性能玩家来说Python社区中主要有orjson、ujson与rapidjson三大性能库。其中orjson使用Rust实现使用了 SIMD 和零拷贝专为性能而生ujson则是C 实现主打轻量级而rapidjson基于C 实现属于功能和性能的平衡型选手。下面是三大性能库的具体使用PK。 1、性能 PK序列化与反序列化 我们基于下列代码对orjson、ujson与rapidjson进行了性能测试 import orjson, ujson, rapidjson, json import timedata [{id: i, name: fuser{i}, active: True, score: i * 0.5} for i in range(100000)]def test(lib, dumps_func, loads_func):t1 time.time()s dumps_func(data)t2 time.time()obj loads_func(s)t3 time.time()print(f{lib}: dumps{t2 - t1:.4f}s, loads{t3 - t2:.4f}s)test(orjson, orjson.dumps, orjson.loads) test(ujson, ujson.dumps, ujson.loads) test(rapidjson, rapidjson.dumps, rapidjson.loads) test(json, json.dumps, json.loads)基于 10 万条数据的序列化dumps和反序列化loads性能测试结果单位秒越低越好大致可以得到一个这样的结果 库名dumps 时间loads 时间总体性能评价orjson 最快~0.09s 最快~0.08s 超高速ujson次快~0.13s次快~0.12s 快rapidjson稍慢~0.18s稳定~0.15s 中等json内置 ~0.27s ~0.23s 慢 2、基本使用 PK序列化与反序列化 在基本的序列化与反序列化操作上orjson、ujson、rapidjson都保持了json库的简洁 # orjson import orjson orjson.dumps({x: 1}) # → b{x:1} orjson.loads(b{x:1}) # → {x: 1}# ujson import ujson ujson.dumps({x: 1}) # → {x:1} ujson.loads({x:1}) # → {x: 1}# rapidjson import rapidjson rapidjson.dumps({x: 1}) # → {x:1} rapidjson.loads({x:1}) # → {x: 1}当然在细节上它们仍有以下区别 用法orjsonujsonrapidjson序列化orjson.dumps(data) → bytesujson.dumps(data) → strrapidjson.dumps(data) → str反序列化orjson.loads(bytes/str)ujson.loads(str)rapidjson.loads(str)注意点返回 bytes需 .decode()无 datetime 支持返回 str兼容性强 另外它们对高级类型的支持情况也大相径庭 功能特性orjsonujsonrapidjson✅ 支持 datetime✅ ISO 格式❌✅ 可配置格式✅ 支持 Decimal⚠️ 转为 float❌✅ 原生支持✅ 自定义对象序列化✅ 支持 default❌✅ 支持 default✅ 精度控制float、NaN✅ option 参数❌✅ 多选项支持✅ 缩进与格式化输出✅有❌✅ indent 参数✅ 输出类型bytesstrstr 总体而言对于高性能玩家来说orjson是一个不错的选择它有着比json标准库更好的性能同时也支持更多的高级类型。
http://www.eeditor.cn/news/126460/

相关文章:

  • app企业网站模板免费下载swf影视网站源码
  • 西宁网站怎么做seo提供企业网站建设价格
  • 电子商务网站开发常见如何让网站关键词搜录
  • 哪里有网站开发技术专业上海网站建设公司
  • 营销型网站创建成品短视频软件源码
  • 中国建设集团门户网站营销咨询顾问
  • 网站头图设计网站搭建功能需求
  • 昌乐做网站三水网站建设哪家好
  • 做网站网站代理犯法吗德阳网站建设 选哪家好
  • 服装网站建设物流配送系统网页版qq在线登录
  • 做实验室信息的网站长安大学门户网站是谁给做的
  • 重庆网站界面设计苏州行业网络推广排名稳定
  • 网站开发需要哪些职位建站网址什么意思
  • 正规的镇江网站建设公司标志logo设计图片
  • 上海知名网站建设公司领优惠卷的网站怎么做
  • 期货贵金属网站源码建设wordpress 文章评论插件
  • 如何形容网站开发公司技术经验wordpress文章首页不显示怎么办
  • 4p 4c 4r营销理论区别seo外链购买
  • 制作网站费怎么做会计科目大连专业网页设计
  • 合作建站协议南昌专业网站建设公司哪家好
  • 如何用dedecms做网站郴州北京网站建设
  • 网站开发的意义和作用海外教育集团网站建设
  • 电子商务网站建设与管理基础济南专业做网站公司
  • 高端企业网站 程序网站建设模板html
  • 网站架构组成部分自适应网站主要用什么做
  • 一个手机网站用ps制作海报教程方法步骤
  • 西电信息化建设处网站百度的网站
  • 南京建设主管部门网站天水市城市建设投资集团网站
  • 求和萝莉做的网站公众号怎么进入
  • 免费建网站 步骤龙华网站建设-信科网络