我已经打开了一个套接字,并希望从中读取一些JSON数据。问题在于标准库中的 json
模块只能解析字符串(load
只读取整个文件并在内部调用 loads
)。甚至看起来,在模块的所有层次结构中,它都依赖于参数为字符串。
这是套接字的真正问题,因为你永远无法将它全部读取到字符串中,并且在实际解析之前也不知道要读取多少字节。
所以我的问题是:有没有(简单而优雅的)解决方法?有没有其他可以逐步解析数据的 JSON 库?值得自己编写吗?
编辑:这是XBMC jsonrpc api 。没有消息包装,我无法控制格式。每条消息可能在单行或多行上。我可以编写一些简单的解析器,只需要使用某种形式的 getc
函数并使用 s.recv(1)
进行喂送,但这不是非常Pythonic 的解决方案,而且我有点懒得那样做 :-)