jsonschema - 使用 json 模式验证 json 仅包含 ascii 字符
问题描述
我们正在与硬件设备连接,我们正在上传 json 配置文件。该设备无法处理 json 上任何地方的非 ascii 字符 - 即使转义使用也不行\uXXXX
。
我们已经在使用 draft-07 进行模式验证,所以我们想在模式中指定这个约束。我们可以对所有字符串设置正则表达式约束。
但问题是我们必须additionalProperties: true
在几个地方拥有 - 并且附加属性必须允许任何 json 值。但我们还必须将它们限制为仅包含 ascii 字符。
这可以在模式中指定吗?
示例简化模式:
{
"$schema":"http://json-schema.org/draft-07/schema#",
"type":"object",
"properties":
{
"channel":
{
"type":"array",
"items":
{
"type":"object",
"properties": { "name":{"type":"string"} },
"required":["name"],
"additionalProperties":true
}
}
},
"required":["channels"],
"additionalProperties":true
}
不应验证的示例 json:
{
"channels":[ {"name":"temperature", "input": "temp in °C"}],
"other":[ {"mykey": "ü"}],
"danish": "æøå"
}
解决方案
的值additionalProperties
是 JSON 模式本身(布尔值也是 JSON 模式!)。
如果您将 的值设置为additionalProperties
与其他属性类似的值,它将应用于所有其他属性。
如果您想要一个示例,请提供一个我可以使用的示例架构,我很乐意展示。
推荐阅读
- python - PyQT5 不显示打开和保存对话框
- android - 按钮 setLayoutParams 和 setDrawable Android
- bolt-cms - 是否可以在 Bolt CMS 4 中构建模块化页面?类似于 GravCMS 模块化页面或 SuluCMS 内容块
- c# - 试图对硬盘进行压力测试,但 Windows 在读取期间显示没有硬盘使用情况
- html - 去掉 div 之间的空格
- ruby - ruby gem`grpc`没有连接到通过`grpcurl`命令行连接的服务
- javascript - 角度的导入和导出
- python - 在 pandas groupby 上使用 map 或 applymap
- actions-on-google - CameraStream 特征不接受 PIN 验证
- google-maps - 为什么我的自定义 Google 地图不再起作用?