python json库函数_Python中Json库loads方法ValueError异常分析

之前用python(2.7版本)开发公司网络协议的解析工具,直接从网络抓包pcap文件中解析出协议交换流程.公司协议中二进制和Json两种格式类型共存.针对二进制内容,python的struct这库用起来还是蛮顺手的.针对Json协议部分,首选就是本文的Json库.对于Json库的详细介绍,可以网上搜一把,资料还是很全的.(这里讨论的是json库的loads方法.由于struct库获取过来的数据,...
摘要由CSDN通过智能技术生成

之前用python(2.7版本)开发公司网络协议的解析工具,直接从网络抓包pcap文件中解析出协议交换流程.

公司协议中二进制和Json两种格式类型共存.针对二进制内容,python的struct这库用起来还是蛮顺手的.针对Json协议部分,首选就是本文的Json库.对于Json库的详细介绍,可以网上搜一把,资料还是很全的.(

这里讨论的是json库的loads方法.由于struct库获取过来的数据,都是以pythonh中的字符串类型的保存的,所以我采用json的loads方法(load是从文件中加载).于是乎, 问题就出现了, 我使用时loads抛出了一个ValueError异常.查看下程序堆栈信息,可以发现loads方法的调用流程是:

loads()->_default_decoder.decode(s)

其中decode的库源代码如下

def decode(self, s, _w=WHITESPACE.match):

"""Return the Python representation of ``s`` (a ``str`` or ``unicode``

instance containing a JSON document)

"""

obj, end = self.raw_decode(s, idx=_w(s, 0).end())

end = _w(s, end).end()

if end != len(s):

raise ValueError(errmsg("Extra data", s, end, len(s)))

return obj

其中WHITESPACE是一个正则表示式对象,其定义代码如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值