自动将 JSON 数据迁移到最新版本的 JSON 架构
Automatically migrate JSON data to newest version of JSON schema
我的 linux 机器上有一个服务 运行,它在机器启动时读取存储在 .json 文件中的数据。该服务然后验证传入的 JSON 数据并根据数据修改特定的系统配置。该服务是用 C++ 编写的,使用 https://github.com/pboettch/json-schema-validator.
进行验证。
在开发过程中,很容易修改 JSON 模式,只需手动调整数据即可。我已经开始为我的 JSON 模式使用语义版本控制,并通过以下方式包含它:
JSON 架构:
{
"$id": "https://my-company.org/schemas/config/0.1.0/config.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
// Start of Schema definition
}
JSON数据:
{
"$schema": "https://my-comapny.org/schemas/config/0.1.0/config.schema.json",
// Rest of JSON data
}
添加版本后,我可以在验证之前检查是否存在版本不匹配。
我正在寻找的是一种在发现版本不匹配时自动迁移 JSON 数据以匹配较新架构版本的方法。有什么方法可以自动实现这一点,还是手动编辑 JSON 数据以匹配模式的唯一方法?
因为我计划将其作为开源发布,所以我真的很想包括某种形式的自动迁移,这样我就可以询问用户是否要迁移以符合最新的架构版本,而不是抛出错误,如果发现版本不匹配。
我的 linux 机器上有一个服务 运行,它在机器启动时读取存储在 .json 文件中的数据。该服务然后验证传入的 JSON 数据并根据数据修改特定的系统配置。该服务是用 C++ 编写的,使用 https://github.com/pboettch/json-schema-validator.
进行验证。在开发过程中,很容易修改 JSON 模式,只需手动调整数据即可。我已经开始为我的 JSON 模式使用语义版本控制,并通过以下方式包含它:
JSON 架构:
{
"$id": "https://my-company.org/schemas/config/0.1.0/config.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
// Start of Schema definition
}
JSON数据:
{
"$schema": "https://my-comapny.org/schemas/config/0.1.0/config.schema.json",
// Rest of JSON data
}
添加版本后,我可以在验证之前检查是否存在版本不匹配。
我正在寻找的是一种在发现版本不匹配时自动迁移 JSON 数据以匹配较新架构版本的方法。有什么方法可以自动实现这一点,还是手动编辑 JSON 数据以匹配模式的唯一方法?
因为我计划将其作为开源发布,所以我真的很想包括某种形式的自动迁移,这样我就可以询问用户是否要迁移以符合最新的架构版本,而不是抛出错误,如果发现版本不匹配。