SJSON Python序列化/反序列化库
项目描述
SJSON
SJSON 是一个用于读取/写入简化版JSON的小型库,如最初在 Bitsquid博客 中所述。
许可证
SJSON 在两个条款的BSD许可证下授权。有关详细信息,请参阅 LICENSE.txt
。
SJSON格式
SJSON与普通JSON非常相似(实际上,自1.2.0版本以来,SJSON库也将加载普通JSON)。它主要减少了所需的标记量。主要区别在于
- 每个文件都以一个隐式对象开始。也就是说,一个空的SJSON文件等价于一个包含
{}
的JSON文件。 - 在键值对之后可以使用逗号,这是可选的。
- 只要它们是有效的标识符,键就不需要引号。一个标识符由字母、数字和
_
组成。 - 除了
:
之外,还可以使用=
来分隔键值。规范分隔符是=
。 - 允许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 允许使用原始字符串字面量,无论是 Lua 还是 Python 风格。
foo = [=[This is a raw literal with embedded " and stuff]=]
foo = """This is a raw literal with embedded " and stuff"""
用法
该库提供了四个方法,类似于 Python JSON 模块。这些是
dump
:将对象编码为 SJSON 并写入流。dumps
:将对象编码为 SJSON 并返回一个字符串。load
:从流中解码 SJSON 编码的对象。loads
:从字符串中解码 SJSON 编码的对象。
变更日志
2.1.1
- 仅包装更改。提高了支持的 Python 版本至 Python 3.12
2.1
- 添加对 Python 风格的原始字符串的支持,由
"""
分隔。 - 改进对未知字符串转义的处理。之前,这些会引发异常,现在它们会被传递。
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
- 解析性能得到了显著提高。
- 现在可以解析文件流或字符串了。
1.0.4
- 在解析过程中跟踪位置。这将略微降低性能,但可以提供更好的错误信息。
- 输入现在是字节导向的。
1.0.3
- 添加了对原始字符串字面量的支持。这些由
[=[
]=]
分隔,并且在字符串内部不需要转义。
1.0.2
- 现在正确转义了包含空白的字符串。
1.0.1
- 修复了各种字符串编码/解码错误。
- 编码现在使用
collections.abc
来识别序列和映射,而不是直接针对list
和dict
进行测试。
1.0.0
PyPI 的初始发布。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
sjson-2.1.1.tar.gz (10.3 kB 查看哈希值)
构建分布
sjson-2.1.1-py3-none-any.whl (8.1 kB 查看哈希值)