位置: IT常识 - 正文

详解Python中的JSON编码模块(python jsdom)

编辑:rootadmin

推荐整理分享详解Python中的JSON编码模块(python jsdom),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python js,python jsin,python jose,python jsdom,python jso,python js,python jsin,python js,内容如对您有帮助,希望把文章链接给更多的朋友!

JSON编码支持的基本数据类型为 None , bool , int , float 和 str , 以及包含这些类型数据的lists,tuples和dictionaries。 对于dictionaries,keys需要是字符串类型(字典中任何非字符串类型的key在编码时会先转换为字符串)。 为了遵循JSON规范,你应该只编码Python的lists和dictionaries。 而且,在web应用程序中,顶层对象被编码为一个字典是一个标准做法。

JSON编码的格式对于Python语法而已几乎是完全一样的,除了一些小的差异之外。 比如,True会被映射为true,False被映射为false,而None会被映射为null。 下面是一个例子,演示了编码后的字符串效果:

>>>json.dumps(False)'false'>>>d={'a':True,...'b':'Hello',...'c':None}>>>json.dumps(d)'{"b":"Hello","c":null,"a":true}'>>>

如果你试着去检查JSON解码后的数据,你通常很难通过简单的打印来确定它的结构, 特别是当数据的嵌套结构层次很深或者包含大量的字段时。 为了解决这个问题,可以考虑使用pprint模块的 pprint() 函数来代替普通的 print() 函数。 它会按照key的字母顺序并以一种更加美观的方式输出。 下面是一个演示如何漂亮的打印输出Twitter上搜索结果的例子:

>>>fromurllib.requestimporturlopen>>>importjson>>>u=urlopen('http://search.twitter.com/search.json?q=python&rpp=5')>>>resp=json.loads(u.read().decode('utf-8'))>>>frompprintimportpprint>>>pprint(resp){'completed_in':0.074,'max_id':264043230692245504,'max_id_str':'264043230692245504','next_page':'?page=2&max_id=264043230692245504&q=python&rpp=5','page':1,'query':'python','refresh_url':'?since_id=264043230692245504&q=python','results':[{'created_at':'Thu,01Nov201216:36:26+0000','from_user':...},{'created_at':'Thu,01Nov201216:36:14+0000','from_user':...},{'created_at':'Thu,01Nov201216:36:13+0000','from_user':...},{'created_at':'Thu,01Nov201216:36:07+0000','from_user':...}{'created_at':'Thu,01Nov201216:36:04+0000','from_user':...}],'results_per_page':5,'since_id':0,'since_id_str':'0'}>>>详解Python中的JSON编码模块(python jsdom)

一般来讲,JSON解码会根据提供的数据创建dicts或lists。 如果你想要创建其他类型的对象,可以给 json.loads() 传递object_pairs_hook或object_hook参数。 例如,下面是演示如何解码JSON数据并在一个OrderedDict中保留其顺序的例子:

>>>s='{"name":"ACME","shares":50,"price":490.1}'>>>fromcollectionsimportOrderedDict>>>data=json.loads(s,object_pairs_hook=OrderedDict)>>>dataOrderedDict([('name','ACME'),('shares',50),('price',490.1)])>>>

下面是如何将一个JSON字典转换为一个Python对象例子:

>>>classJSONObject:...def__init__(self,d):...self.__dict__=d...>>>>>>data=json.loads(s,object_hook=JSONObject)>>>data.name'ACME'>>>data.shares50>>>data.price490.1>>>

最后一个例子中,JSON解码后的字典作为一个单个参数传递给 __init__() 。 然后,你就可以随心所欲的使用它了,比如作为一个实例字典来直接使用它。

在编码JSON的时候,还有一些选项很有用。 如果你想获得漂亮的格式化字符串后输出,可以使用 json.dumps() 的indent参数。 它会使得输出和pprint()函数效果类似。比如:

>>>print(json.dumps(data)){"price":542.23,"name":"ACME","shares":100}>>>print(json.dumps(data,indent=4)){"price":542.23,"name":"ACME","shares":100}>>>

对象实例通常并不是JSON可序列化的。例如:

>>>classPoint:...def__init__(self,x,y):...self.x=x...self.y=y...>>>p=Point(2,3)>>>json.dumps(p)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"/usr/local/lib/python3.3/json/__init__.py",line226,indumpsreturn_default_encoder.encode(obj)File"/usr/local/lib/python3.3/json/encoder.py",line187,inencodechunks=self.iterencode(o,_one_shot=True)File"/usr/local/lib/python3.3/json/encoder.py",line245,initerencodereturn_iterencode(o,0)File"/usr/local/lib/python3.3/json/encoder.py",line169,indefaultraiseTypeError(repr(o)+"isnotJSONserializable")TypeError:<__main__.Pointobjectat0x1006f2650>isnotJSONserializable>>>

如果你想序列化对象实例,你可以提供一个函数,它的输入是一个实例,返回一个可序列化的字典。例如:

defserialize_instance(obj):d={'__classname__':type(obj).__name__}d.update(vars(obj))returnd

如果你想反过来获取这个实例,可以这样做:

#Dictionarymappingnamestoknownclassesclasses={'Point':Point}defunserialize_object(d):clsname=d.pop('__classname__',None)ifclsname:cls=classes[clsname]obj=cls.__new__(cls)#Makeinstancewithoutcalling__init__forkey,valueind.items():setattr(obj,key,value)returnobjelse:returnd

下面是如何使用这些函数的例子:

>>>p=Point(2,3)>>>s=json.dumps(p,default=serialize_instance)>>>s'{"__classname__":"Point","y":3,"x":2}'>>>a=json.loads(s,object_hook=unserialize_object)>>>a<__main__.Pointobjectat0x1017577d0>>>>a.x2>>>a.y3>>>
本文链接地址:https://www.jiuchutong.com/zhishi/303184.html 转载请保留说明!

上一篇:ps中如何进行像素和厘米转换(ps如何进行像素修复)

下一篇:phpcms v9如何安装(phpcms教程)

  • 支付宝一起攒钱功能在哪里(支付宝一起攒钱的软件)

    支付宝一起攒钱功能在哪里(支付宝一起攒钱的软件)

  • 蚂蚁森林如何禁止好友偷能量(蚂蚁森林如何暂时关闭)

    蚂蚁森林如何禁止好友偷能量(蚂蚁森林如何暂时关闭)

  • 华为p40自带手机膜的吗(华为p40自带手机壳怎么样)

    华为p40自带手机膜的吗(华为p40自带手机壳怎么样)

  • 微信切换账号后另一个号能不能收到信息(微信切换账号后别人会发现吗)

    微信切换账号后另一个号能不能收到信息(微信切换账号后别人会发现吗)

  • 抱歉你的店铺已注销无法开店(抱歉,您的店铺已注销,无法开店)

    抱歉你的店铺已注销无法开店(抱歉,您的店铺已注销,无法开店)

  • 怎样设置抖音视频不被别人下载(怎样设置抖音视频置顶?)

    怎样设置抖音视频不被别人下载(怎样设置抖音视频置顶?)

  • g5420处理器相当于i几(g5420处理器办公怎么样)

    g5420处理器相当于i几(g5420处理器办公怎么样)

  • 抖音小程序怎么申请的(抖音小程序怎么添加到桌面)

    抖音小程序怎么申请的(抖音小程序怎么添加到桌面)

  • win加r是哪个键(window加r有什么用)

    win加r是哪个键(window加r有什么用)

  • 美团审核要多久(美团审核要多久才能开店)

    美团审核要多久(美团审核要多久才能开店)

  • 视图的种类(常见剖视图的种类)

    视图的种类(常见剖视图的种类)

  • 大陆的卡在香港能用吗(大陆的卡在香港没法转钱到大陆的卡吗)

    大陆的卡在香港能用吗(大陆的卡在香港没法转钱到大陆的卡吗)

  • 电脑ie系列浏览器有哪些(电脑ie系列浏览器怎么用)

    电脑ie系列浏览器有哪些(电脑ie系列浏览器怎么用)

  • 小黑记事本是干什么的(小黑记事本是干嘛的)

    小黑记事本是干什么的(小黑记事本是干嘛的)

  • 收藏朋友圈图片对方知道吗(朋友圈收藏照片)

    收藏朋友圈图片对方知道吗(朋友圈收藏照片)

  • 电话号码删了还能找回来吗(电话号码删了还会爆通讯录吗)

    电话号码删了还能找回来吗(电话号码删了还会爆通讯录吗)

  • 华为nova5pro充电时间(华为nova5pro充电器型号)

    华为nova5pro充电时间(华为nova5pro充电器型号)

  • QQ被永久封停如何办(qq被永久封停如何注销)

    QQ被永久封停如何办(qq被永久封停如何注销)

  • 小红书退货流程(小红书退货流程图片)

    小红书退货流程(小红书退货流程图片)

  • 锁屏声音在哪设置(锁屏声音在哪设置oppo)

    锁屏声音在哪设置(锁屏声音在哪设置oppo)

  • 初窥Linux系统中的进程管理工具SystemD(浅谈linux)

    初窥Linux系统中的进程管理工具SystemD(浅谈linux)

  • Linux chroot命令用法详解(linux root 命令)

    Linux chroot命令用法详解(linux root 命令)

  • Node.js安装教程及在vscode中的配置(超详细)(nodejs安装教程)

    Node.js安装教程及在vscode中的配置(超详细)(nodejs安装教程)

  • 前端学习笔记(一)——HTML表格(table、tr、td、th、thead、tbody、tfoot标签)(前端必学)

    前端学习笔记(一)——HTML表格(table、tr、td、th、thead、tbody、tfoot标签)(前端必学)

  • 个税申报表中本期收入怎么填
  • 外籍人士如何在中国办理延长签证
  • 经营所得和企业所得
  • 餐饮费入什么科目
  • 城镇土地使用税纳税义务发生时间
  • 金税盘怎么向分行汇款
  • 所得税的账务处理流程
  • 收入与成本不配合
  • 投资款可以是现金吗
  • 增值税需要计入入账价值吗
  • 劳务有预付款吗
  • 出口企业免抵税额要作进项转出吗
  • 融单是什么意思
  • 旅行社的营业收入主要由( )构成
  • 银行承兑逾期证明怎么写
  • 可供出售金融资产和交易性金融资产
  • 无形资产出租后还要摊销吗
  • 企业自有公租房有房产证吗
  • 委托代销收取手续费账务处理
  • 认证过的进项税怎么记账
  • 供热企业免税收入标准
  • 增值税普通发票有什么用
  • 不征税收入税屋
  • 免税的销售额要怎么填入报表
  • 微税平台怎么打印发票
  • 显示发票离线,应当如何处理
  • 员工因公负伤期间公司怎么开工资
  • 个人借款利息收入增值税税率
  • 理财代持有法律效力吗
  • 劳务费属于会计什么科目
  • 税金及附加包括地方教育费附加吗
  • 1697509200
  • 公司需要给员工提供的帮助
  • 在win7系统中文件属性有哪些
  • php输出mysql
  • 留底的进项税额记哪儿?
  • window10怎么取消快捷方式
  • 浏览器并发请求队列数量怎么设置
  • 韦罗尼卡
  • 财政补贴是解决什么问题的
  • 坏账准备收不回来怎么办
  • 汽车年审检测费收费标准
  • 土地增值税扣除率怎样计算
  • 函数的单调性
  • 个体户季度免多少税
  • 收到发票未抵扣增值税
  • 增值税发票遗失可以补开吗
  • 跨地区经营增值税如何缴纳
  • 小规模纳税属于什么科目
  • 个人开发者要缴税吗
  • 差旅费退回怎么写
  • 商品买一送一应该怎么写
  • 购买发票打印机如何账务处理?
  • 建筑工地塔吊租赁会计分录
  • 固定资产清理如何填写增值税申报表
  • 在苹果电脑上怎么下载软件
  • Linux x86_64下安装Flash Player 9
  • fedora29
  • mac怎么添加桌面
  • win10更新后自动锁定
  • windows xp能装微信吗
  • 系统ui怎么关闭
  • win10系统怎么设置开机密码
  • cocos点击事件
  • 作战仿真理论与技术
  • 围绕摄像机旋转怎么设置
  • 在windows窗口中以下叙述错误的是
  • python有没有翻译库
  • eclipse如何调节字体
  • css中hack
  • 计算字符串的长度的函数
  • unity3d动画系统
  • ie8不支持
  • jquery 使用
  • 安卓自定义app
  • 如何在电子税务局看本月应申报的税
  • 税务扣税账户余额不足
  • 冯炜教授现况如何
  • 云南省电子税务局登录入口
  • 企业申报系统网址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设