位置: 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教程)

  • 微信视频怎么关闭麦克风(微信视频怎么关闭弹幕功能)

    微信视频怎么关闭麦克风(微信视频怎么关闭弹幕功能)

  • 小米自带浏览器无法搜索(小米自带浏览器打不开网页)

    小米自带浏览器无法搜索(小米自带浏览器打不开网页)

  • qq相册热度怎么回事(qq群相册热度系数可以更改吗)

    qq相册热度怎么回事(qq群相册热度系数可以更改吗)

  • 怎么检查手机是否中了木马(怎么检查手机是不是翻新机)

    怎么检查手机是否中了木马(怎么检查手机是不是翻新机)

  • 苹果手机自动黑屏怎么设置(苹果手机自动黑屏打不开了咋回事?)

    苹果手机自动黑屏怎么设置(苹果手机自动黑屏打不开了咋回事?)

  • 微信灰色背景怎么设置(微信灰色背景怎么换)

    微信灰色背景怎么设置(微信灰色背景怎么换)

  • 苹果163邮箱设置不成功(苹果163邮箱设置收件服务器)

    苹果163邮箱设置不成功(苹果163邮箱设置收件服务器)

  • 微信如何删除好友(微信如何删除好友并且对方也删除自己)

    微信如何删除好友(微信如何删除好友并且对方也删除自己)

  • 电脑屏幕变小了怎么恢复正常(电脑屏幕变小了 一边出现黑屏怎么弄)

    电脑屏幕变小了怎么恢复正常(电脑屏幕变小了 一边出现黑屏怎么弄)

  • qq的密保手机号怎么解除绑定(qq的密保手机号是什么意思)

    qq的密保手机号怎么解除绑定(qq的密保手机号是什么意思)

  • 苹果电池显示维修怎么关闭(苹果电池显示维修什么意思)

    苹果电池显示维修怎么关闭(苹果电池显示维修什么意思)

  • 天唐动漫网络连接失败怎么办(天唐动漫为什么看不了漫画)

    天唐动漫网络连接失败怎么办(天唐动漫为什么看不了漫画)

  • 小米nfc关机能刷吗(小米手机关闭nfc后能公交刷支付宝吗)

    小米nfc关机能刷吗(小米手机关闭nfc后能公交刷支付宝吗)

  • 华为超级省电闹钟响吗(华为超级省电闹钟)

    华为超级省电闹钟响吗(华为超级省电闹钟)

  • x79主板配什么cpu(x79主板配什么cpu性价比最高)

    x79主板配什么cpu(x79主板配什么cpu性价比最高)

  • 违反微信用户行为规范怎么办(违反微信用户行为规范)

    违反微信用户行为规范怎么办(违反微信用户行为规范)

  • 类纸膜可以贴在钢化膜上吗(类纸膜可以贴在普通膜上吗)

    类纸膜可以贴在钢化膜上吗(类纸膜可以贴在普通膜上吗)

  • 苹果手机怎么关闭自拍镜像(苹果手机怎么关机)

    苹果手机怎么关闭自拍镜像(苹果手机怎么关机)

  • 手机怎么拍照显腿长(手机怎么拍照显示手机型号)

    手机怎么拍照显腿长(手机怎么拍照显示手机型号)

  • 删除的照片怎么找回来(删除的照片怎么找回来免费的软件)

    删除的照片怎么找回来(删除的照片怎么找回来免费的软件)

  • 华为20i怎么关掉后台(华为20hd怎么关闭)

    华为20i怎么关掉后台(华为20hd怎么关闭)

  • 华为智慧能力什么作用(什么叫华为智慧能力)

    华为智慧能力什么作用(什么叫华为智慧能力)

  • 皮皮虾能加通讯录好友吗(皮皮虾怎么添加通讯录好友)

    皮皮虾能加通讯录好友吗(皮皮虾怎么添加通讯录好友)

  • 10英寸平板多大(10英寸平板多大与课本照图)

    10英寸平板多大(10英寸平板多大与课本照图)

  • 抖音转发的视频在哪里(抖音转发的视频怎么去水印)

    抖音转发的视频在哪里(抖音转发的视频怎么去水印)

  • 华为p30分屏方法(华为p30分屏怎么操作)

    华为p30分屏方法(华为p30分屏怎么操作)

  • 营业额超500万会罚款吗
  • 增值税发票开票软件金税盘
  • 计算增值税时要包括关税吗
  • 减免的增值税如何计算
  • 工程施工的材料购进计入哪里
  • 其他综合收益影响递延所得税负债吗
  • 简易计税开的发票可以抵扣吗
  • 有主营业务收入就一定有销项税吗
  • 企业减免的税费账务处理
  • 过了纳税期没有申报
  • 企业所得税成本费用大于发票金额的原因
  • 含税金额怎么算税额公式
  • 厂房装修增值税税率
  • 应收账款计提坏账比例
  • 小规模购买金税盘
  • 法院案件受理费计算器
  • 消费税价外费用的计算
  • 公司买包包送员工入可以计入什么科目?
  • 发票代表收据吗
  • 含税进货价款怎么算
  • 普通发票和专用发票的税点一样吗
  • 机票的抵扣率是多少
  • 股息红利是否交个人所得税
  • 出口退税限额如何理解
  • 小企业成本核算方法移动加权平均法
  • 代销商品手续费计入什么科目
  • 音量图标不显示怎么回事
  • searchnavversion.exe - searchnavversion是什么进程 作用是什么
  • 入股分红项目
  • 收到支票直接背书账务
  • php实现微信公众号分享
  • 80岁以上老年卡上的钱如何消费
  • 厂房押金不退怎么要回来
  • 保险赔款的会计分录
  • the模板引擎
  • php查询mysql数据库
  • 增值税专用发票和普通发票的区别
  • 研发费用资本化可以加计扣除吗
  • mysql从一张表更新到另一张表
  • 消防收费标准
  • 纳税人的交际应酬消费可以抵扣进项税额
  • sql server s
  • 增值税专票什么用处
  • 资金过账属于洗钱吗
  • 计提的应收账款坏账准备的科目有哪些
  • 交耕地占用税如何交
  • 应交税费科目怎么调整
  • 交易性金融资产公允价值变动怎么算
  • 投资者投入固定资产成本
  • 给员工发中秋福利的用词
  • 材料抵扣进项税额
  • 递延纳税筹划策略研究
  • 会计为什么要计提费用
  • 个体工商户个税怎么申报
  • 未开票收入是否代表可以不开发票
  • 未分配利润属于总账科目吗
  • 日记账的建账工作
  • 建立明细账的操作步骤
  • redhat 7.0
  • win8 分屏
  • ubuntu sshserver
  • 苹果mac系统怎么更新
  • 网站遇到错误号怎么办
  • win8应用商店在哪
  • centos 添加服务
  • kavsvc.exe - kavsvc是什么进程 有什么作用
  • windows7无法关闭密码保护共享
  • win10系统如何创建家庭组
  • win10 outlook邮箱设置教程
  • code::blocks怎么用
  • [置顶]bilinovel
  • js动态生成页面
  • nodejs递归创建目录
  • js删除li
  • javascript从入门到放弃
  • javascript内置对象window
  • unity怎么添加ui界面图片
  • 音频资料下载
  • 购买增值税发票税务局打电话来问怎么处理?
  • 浙江省税务局发票短信
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设