【发布时间】:2018-10-21 22:25:58
【问题描述】:
我的 JSON 架构中有一个属性,如下所示:
"properties": {
"theme": {
"type": "boolean",
"title": "Theme",
"enum": ["Light", "Dark"]
}
}
这个属性作为布尔值存储在我的数据库表中,1 表示亮,0 表示暗。问题是,当我填写由模式生成的表单时,它会出错,告诉我 root.theme 的值必须是 [true, false] 之一,并且不会继续到我的后端处理程序。
我发现我目前正在使用一个解决方案,即将“类型”更改为字符串,并在后端处理它,方法是将收到的字符串值转换为对应的布尔值。
我想知道 JSON 模式是否原生支持布尔属性中 true 和 false 的自定义命名。
【问题讨论】:
-
嗨伊万。我想你可能对事情的运作方式有一些误解。 JSON 模式使用 JSON。在 JSON 中,
true和false是它们自己的值。我不知道您所说的“自定义命名”是什么意思。你能扩展一下吗? -
嗨。我知道 true 和 false 是它们自己的原语,我的意思是可以使用布尔类型 JSON 模式属性(我使用模式来构建表单),它可以为应用程序的前端提供字符串值最终用户选择,同时为我提供表单提交的布尔值。自然,我可以通过对模板进行额外的 javascript 操作来实现它/通过表单数据发送到的后端处理它,但我想知道如果我希望用户看到
Light|Dark和系统,是否需要这样的额外代码获取t|f -
JSON Schema 用于验证 JSON。它不是为生成表单而设计的,但有些人已经实现了将模式转换为表单的方法。简单地说,如果您使用 JSON Schema 来做任何不仅仅是验证的事情,您将不得不自己动手,或者使用您正在使用的工具记录问题。不过,数据操作不太可能与表单生成属于同一工具。通常,您将处理您在 ORM 的通货膨胀和通货紧缩层中描述的那种事情,以避免横切问题。
-
希望我没有给人留下无用的印象。如果您想讨论,请随时从官方网站加入 JSON Schema slack 服务器 =]
-
您确实很有帮助,谢谢!考虑到您的话,我可能会坚持到目前为止的内容-当我第一次被介绍给 JSON Schema 时,它是在工具适应它以生成表单的上下文中,但我的印象是它是默认的一部分功能。再次感谢您澄清这些事情确实是分开的。
标签: jsonschema