如何在多个模式中轻松更改重复出现的属性名称

  • 本文关键字:属性 模式 json jsonschema
  • 更新时间 :
  • 英文 :


为了能够反序列化多态类型,我在许多JSON对象中使用了类型鉴别器。例如,{ "$type": "SomeType", "otherProperties": "..." }

对于具体类型的JSON模式,我为类型指定了一个常量值。

{
"type": "object",
"properties": {
"$type": { "const": "SomeType" },
"otherProperties": { "type": "string" }
}
}

这是有效的,但将选择的"$类型";属性名称贯穿许多不同的JSON模式。事实上,我们正在考虑将其重命名为"__类型";与BSON打得更好。

我能阻止在所有受影响的架构中重命名此属性吗?

我试着从其他地方搜索加载属性名称的方法。据我所知,$ref只适用于属性值。

JSON模式无法像您所要求的那样从其他位置动态加载键值。特别是因为值会不同,并且您只希望从其他地方加载密钥。

虽然使用JSONSchema无法做到这一点,但可以使用Jsonnet之类的模板工具。我亲眼目睹了这项大规模的工作。

这需要你有一个预处理步骤,但听起来这是你已经在计划的事情,创建某种管道来生成你的模式。

警告一下,注意现有的模式生成工具。它通常只适用于脚手架,需要大量修改。听起来你正在建立自己的,这可能是一个更好的方法。

相关内容

  • 没有找到相关文章

最新更新