SJSON Serializer/Desarializer for Python
SJSON的Python项目详细描述
sjson
sjson是一个读/写简化json的小库,如Bitsquid blog中最初描述的那样。
许可证
sjson是根据双子句bsd license授权的。有关详细信息,请参见LICENSE.txt
。
sjson格式
sjson与普通json非常相似(事实上,自1.2.0版以来,sjson库也将加载普通json)。它主要减少了一点所需的标记。主要区别是:
- 每个文件都以一个隐式对象开始。也就是说,空的sjson文件相当于包含
{}
的json文件。 - 键值对后的逗号是可选的。
- 只要密钥是有效的标识符,就不必引用它们。标识符由字母、数字和
_
组成。 - ^除了
:
之外,还允许{}用于键值分离。典型的分隔符是 =
。
允许使用LI> C和C++风格的注释。
此外,此库还支持原始字符串文本。
示例
json:
{
"foo" : 23,
"bar" : [1, 2, 3],
"baz" : {
"key" : "value"
}
}
sjson:
foo = 23
bar = [1, 2, 3]
baz = {
// SJSON also allows for comments
key = "value"
}
作为扩展,sjson允许原始字符串文本。
foo = [=[This is a raw literal with embedded " and stuff]=]
用法
库提供了四种方法,类似于python json模块。这些是:
dump
:将对象编码为sjson并写入流。dumps
:将对象编码为sjson并返回字符串。load
:从流中解码sjson编码的对象。loads
:从字符串解码sjson编码的对象。
更改日志
2.0.3
- 重新发布2.0.2。
2.0.2
- 只改变包装。此版本仅包含打包更改,尚未向公众发布,请改用2.0.3。
2.0.1
- 除了
dumps
之外,还要添加dump
,以与python json模块保持一致。 - 额外的PEP8一致性调整。
2.0.0
- 该库现在符合PEP8。这应该不会影响此库的大多数用户,唯一用户可见的更改是
ParseException.GetLocation
已重命名为get_location
。核心函数尚未重命名,并且与api兼容。
1.2.0
- 如果密钥包含特殊字符,则在编码过程中无法正确引用它们。
- 列表元素缩进不正确。
- 列表缩进现在接受字符串或数字(类似于python json模块)。
- 现在,
:
和=
都支持作为键值分隔符,允许sjson库解析纯json文件。
1.1.1
- 增加了C/C++风格注释的支持。
- 行号/列号现在从1开始(以前,第一个字符在第0行第0列中)。
1.1.0
- 解析性能得到了显著提高。
- 现在可以像stream或string那样解析文件。
1.0.4
- 解析期间跟踪位置。这可能会稍微降低性能,但允许更好的错误消息。
- 现在输入是面向字节的。
1.0.3
- 添加对原始字符串文本的支持。它们由
[=[
]=]
分隔,不需要在字符串中转义。
1.0.2
- 带空格的字符串现在可以正确转义。
1.0.1
- 对字符串编码/解码错误的各种修复。
- 编码现在使用
collections.abc
来识别序列和映射,而不是直接针对list
和dict
进行测试。
1.0.0
初始PYPI发布。