跳转到主要内容

根据JSON Schema的属性顺序对JSON或YAML文档进行排序

项目描述

提供JSON工具

  • jschon-sort根据其JSON Schema对JSON或YAML文档进行排序:对象属性按其在JSON Schema中声明的顺序排序。

  • jschon-remove-additional-props删除在JSON Schema中未定义的属性。

"jschon"这个名字与它基于jschon库进行JSON Schema处理有关。

动机

根据JSON RFC,对象是一个无序集合。在实践中,在序列化的JSON或YAML文件中,属性的特定顺序可以有益于可读性:例如,{"start": 10, "end": 20}比简单的字典序{"end": 20, "start": 10}(由json.dumps(..., sort_keys=True)产生)更自然。虽然有几个尝试将属性排序引入JSON Schema,但这里我们采用不同的方法。通过利用JSON Schema本身是针对人类维护者编写的这一事实,我们可以从JSON Schema定义的排序中推断出直观的顺序,并将其应用于文档本身。

用法

Shell:

jschon-sort --schema ../schema.json file.yaml

API:

import jschon
import jschon_tools

jschon.create_catalog('2020-12')
...
sorted_doc_data = jschon_tools.process_json_doc(
    schema_data=schema_data,
    doc_data=doc_data,
    sort=True,
)

示例

给定 schema

{
  "type": "object",
  "properties": {
    "range": {
      "type": "object",
      "properties": {
        "start": {"type": "number"},
        "end": {"type": "number"}
      }
    }
  }
}

以下 document

{"range": {"end": 20, "start": 10}}

将被重新排序为

{"range": {"start": 20, "end": 10}}

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

jschon-sort-0.2.0.tar.gz (5.6 kB 查看哈希值)

上传时间

支持者