json - 如何使用 cuelang 对 json 文件进行验证?
问题描述
我正在评估 cuelang.org 以定义数据约束,例如在进一步处理之前对提交给 azure devops 管道的不受信任的 json 有效负载进行类型或值检查。
在针对无效数据测试我的定义时,我没有返回任何错误。
我想同时进行类型和值检查:
规则提示:
#LoggingLinuxVM: {
resource_id: #NonEmptyString
version: =~"2020-07-21"
type: =~"Linux"
properties: #LoggingPropertiesLinuxVM
}
#LoggingPropertiesLinuxVM: {
CustomLogFiles: [...#NonEmptyString]
}
#NonEmptyString: string & !=""
无效负载(缺少类型)
{
"resource_id": "/subscription/.../...",
"version": "2020-07-21",
"properties": {
"custom_log_files": [
"/var/log/dmesg",
"/var/log/messages"
]
}
}
尝试验证时:cue vet payload.json rules.cue
我希望看到验证错误,但是没有引发任何错误并且退出状态为 0 。有没有人以类似的方式使用 cuelang 并且可以看到我哪里出错了?
解决方案
事实证明,您必须提供 --schema 标志才能以预期的方式运行。对于此示例,如果 json 在 payload.json 中,完整的命令将是:
cue vet --schema '#LoggingLinuxVM' payload.json rules.cue
推荐阅读
- python - 在 Backtrader 问题中获取数据
- python - Pandas:创建一个班次指标,省略组的第一个值
- javascript - 结束日期必须小于开始日期,Vuelidate 和 VueJs
- windows - 命令提示符作为管理员使用实际用户的 %username% 变量
- julia - `|> gpu` 在 Flux.jl 中是什么意思
- angularjs - Angular (1.x) - 以编程方式从代码访问 NG-REPEAT
- python - 函数内部的 Tkinter 可滚动框架
- swift - 基于 SwiftUI 变化的动画 NSWindow 的大小变化
- excel - VBA:如何检查 Filter Criteria2 是否存在?
- c++ - 是否可以在二进制图像中使用 openCV findChessboardCorners 函数?