python对rfc 7464 json文本序列的支持

jsonseq的Python项目详细描述


jsonseq

RFC 7464 JSON Text Sequencespython的编码和解码。

Build StatusCoverage StatusDocumentation Status

用法

jsonseq.encode.JSONSeqEncoder类接受可序列化的json流。 python对象并为每个对象生成其json表示 在可选的ascii记录分隔符(rs,\x1e)和换行符(\n)之间。

>>>fromjsonseq.encodeimportJSONSeqEncoder>>>forchunkinJSONSeqEncoder().encode(({"a":i,"b":i}foriinrange(3))):...print(repr(chunk))...'{"a": 0, "b": 0}\n''{"a": 1, "b": 1}\n''{"a": 2, "b": 2}\n'

rs允许漂亮的打印json流式输出,序列可以是 再次解码。

>>>forchunkinJSONSeqEncoder(with_rs=True,indent=2).encode(({"a":i,"b":i}foriinrange(3))):...print(repr(chunk))...'\x1e{\n  "a": 0,\n  "b": 0\n}\n''\x1e{\n  "a": 1,\n  "b": 1\n}\n''\x1e{\n  "a": 2,\n  "b": 2\n}\n'

您还可以获得json序列的小块,因为它们是用 iterencode()方法。

>>>forchunkinJSONSeqEncoder(with_rs=True).iterencode(({"a":i}foriinrange(3))):...print(repr(chunk))...'\x1e''{''"a"'': ''0''}''\n''\x1e''{''"a"'': ''1''}''\n''\x1e''{''"a"'': ''2''}''\n'

可以使用encode()iterencode()将json文本序列复制到文件中。

withopen("/tmp/example.jsons","w")asf:forchunkinJSONSeqEncoder(with_rs=True,indent=2).iterencode(({"a":i,"b":i}foriinrange(3))):f.write(chunk)

调用文件的write()方法时不需要添加换行符。 jsonseqencoder确保它已经在需要的地方了。

jsonseq.decode.JSONSeqDecoder类接受json文本流 夹在可选的ascii记录分隔符(rs,\x1e)和 换行符(\n)并产生解码的python对象。

>>>stream=['\x1e','{','"a"',': ','0','}','\n','\x1e','{','"a"',': ','1','}','\n','\x1e','{','"a"',': ','2','}','\n']>>>forobjinJSONSeqDecoder().decode(stream):...print(repr(obj))...{'a':0}{'a':1}{'a':2}

可以用同样的方法从文件中读取对象。

>>>withopen("/tmp/example.jsons")asf:...forobjinJSONSeqDecoder().decode(f):...print(repr(obj))...{'a':0,'b':0}{'a':1,'b':1}{'a':2,'b':2}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么javaassist仅在项目中使用lambda时加载Entitymanager时抛出无效的常量类型:18   java如何识别用户是否在Alexa中首次启动技能?   java maven:如何防止插件更新   java StringBuilder将null追加为“null”   在java中,我可以在画布上绘制画布吗?   java如何在JRadioButton上垂直对齐文本和图像?   java“类是对象的集合”。这个定义是对的还是错的?   java如何用其他字符替换字符串中的1个或多个字符?   Java的HashSet<Double>及其子集的hashcode的唯一性   对象ArrayList的java并发修改错误   多线程Java线程:让EDT函数等待长时间运行的函数离开EDT   java如何重写方法,将一个实例变量和一个局部变量相加,从而生成一个数据类型为Double的新变量?