Python中Json库loads方法ValueError异常分析

在Python中使用Json库的loads方法解析JSON字符串时遇到ValueError异常,问题在于JSON字符串末尾多了一个c字符结尾符0。解决方法是对JSON字符串进行预处理,移除多余的字符。关于不支持'{}{}'格式的JSON字符串,可能是由于库的设计限制,可以自行研究实现支持这种格式的解析。
摘要由CSDN通过智能技术生成
最近用python开发公司网络协议的解析工具,直接从网络抓包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()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值