如何验证嵌套 json 中的子值
How to validate child value in nested json
这是 json 响应正文:
{
"studentName": "good student",
"age": "18",
"address": "street 123",
"courses": {
"math": {
"description": "how to calculate",
"enrollment": "enrolled",
"status": {
"result": "OK"
}
},
"english": {
"description": "abc",
"enrollment": "not-enrolled",
"status": {
"result": "OK"
}
}
}
}
我想验证 "enrollment" 值,例如,我想获得以下格式的输出:
math : enrolled
english : not-enrolled
想知道如何使用 jq 命令执行此操作,在此先感谢。
不确定 "validate." 是什么意思但是要简单地获取 "course"
和它的当前 "enrollment"
状态,您可以这样做:
.courses | to_entries[] | "\(.key) : \(.value.enrollment)"
如果 "validate" 意味着检查值是否都符合预期,那么您可以按照以下行使用过滤器:
.courses
| with_entries( select( .value.enrollment as $e
| ["enrolled", "not-enrolled"] | index($e) | not) )
即 select "enrollment" 不在可接受值列表中的课程。 (这里,"X | not" 具有否定 X 的效果。)
运行 针对您的数据添加了 "enrollment" 无效的课程会产生该课程:
{
"french": {
"description": "abc",
"enrollment": "non",
"status": {
"result": "OK"
}
}
}
这是 json 响应正文:
{
"studentName": "good student",
"age": "18",
"address": "street 123",
"courses": {
"math": {
"description": "how to calculate",
"enrollment": "enrolled",
"status": {
"result": "OK"
}
},
"english": {
"description": "abc",
"enrollment": "not-enrolled",
"status": {
"result": "OK"
}
}
}
}
我想验证 "enrollment" 值,例如,我想获得以下格式的输出:
math : enrolled
english : not-enrolled
想知道如何使用 jq 命令执行此操作,在此先感谢。
不确定 "validate." 是什么意思但是要简单地获取 "course"
和它的当前 "enrollment"
状态,您可以这样做:
.courses | to_entries[] | "\(.key) : \(.value.enrollment)"
如果 "validate" 意味着检查值是否都符合预期,那么您可以按照以下行使用过滤器:
.courses
| with_entries( select( .value.enrollment as $e
| ["enrolled", "not-enrolled"] | index($e) | not) )
即 select "enrollment" 不在可接受值列表中的课程。 (这里,"X | not" 具有否定 X 的效果。)
运行 针对您的数据添加了 "enrollment" 无效的课程会产生该课程:
{
"french": {
"description": "abc",
"enrollment": "non",
"status": {
"result": "OK"
}
}
}