json-e/json-e

GitHub: json-e/json-e

JSON-e 是一个数据结构参数化模板系统,通过将 JSON 对象视为模板并用上下文数据对其进行变换来生成输出数据结构。

Stars: 203 | Forks: 90

# JSON-e JSON-e 是一个数据结构参数化系统,用于将上下文嵌入到 JSON 对象中。 其核心理念是将一个数据结构视为“模板”,并对其进行转换, 使用另一个数据结构作为上下文,以生成输出的数据结构。 有无数的库可以对字符串执行此操作,例如 [mustache](https://mustache.github.io/)。JSON-e 的独特之处在于它 处理的是数据结构,而不是它们的文本表示形式。这允许 输入以多种格式(JSON、YAML 等)编写,甚至可以动态 生成。这也意味着输出永远不会是“无效的”,即使在 包含大量上下文数据时也是如此。 JSON-e 还被设计为在处理不受信任的数据时是安全的。它从不使用 `eval` 或任何其他可能导致任意代码执行的函数。它 还不允许无限迭代,因此任何 JSON-e 渲染操作都会 在有限的时间内完成。 ## 语言定义与实现 该仓库既定义了 JSON-e 语言,也包含了该语言的几种 实现。 语言定义体现在 [`./specification.yml`](./specification.yml) 以及 语言构造的文档中。 语言及其实现全部一起进行版本控制,并遵循 语义化版本规范。对语言规范的破坏性变更并不常见, 通常是由错误修复而非新功能引起的。通常,您可以 认为该语言是稳定的。 在各个实现之间,任何未记录为未定义行为的行为差异 都将被视为错误。如果修复该错误会导致某个实现中的 向后不兼容,那么该变更可能会被视为 破坏性变更,并随新的主版本发布。 ### 其他实现 * [json-everything](https://json-everything.net/json-e) 提供了 .NET 的实现。 ## 完整文档 请参阅 [json-e.js.org](https://json-e.js.org)。 ## 变更日志 请参阅 [CHANGELOG.rst](https://github.com/json-e/json-e/blob/main/CHANGELOG.rst) 了解此库每个版本的变更。 ## 实际应用 JSON-e 在哪里被使用? * [AlterSchema](https://alterschema.sourcemeta.com/) 使用 JSON Schema 本身和 JSON-e 编写的声明式转换规则集来指定升级。 * [Taskcluster](https://taskcluster.net/) 广泛使用 JSON-e 从各种 JSON 格式的输入(例如 GitHub 事件)生成任务定义。 (欢迎提交 PR 在此处添加您的项目)
标签:JSON, SOC Prime, 参数化, 多人体追踪, 开发工具, 数据可视化, 数据结构, 数据转换, 模板引擎, 通知系统