【问题标题】:Extract default value from json schema从 json 模式中提取默认值
【发布时间】:2021-03-09 12:46:13
【问题描述】:

我正在尝试使用架构中提供的默认值从 json 架构创建 json 所以基本上我想要一个像这样的json

{
    "type" : "object",
    "properties": {
        "string": {
            "type" : "ingeger",
            "default" : "the default string"
        },
        "number": {
            "type" : "number",
            "default" : 1
        },
        "object": {
            "type" : "object",
            "properties" : {
                "string": {
                    "type" : "ingeger",
                    "default" : "the default string 2"
                },
                "number": {
                    "type" : "number",
                    "default" : 2
                }
            }
        }
    }
}

这样结束

{
  "string": "the default string",
  "number": 1,
  "object": {
    "string": "the default string 2",
    "number": 2
  }
}

当我看到这个https://stackoverflow.com/a/60940893/15261387 时,我认为这很容易适应我当前的问题,但经过多次尝试,我不得不面对这样一个事实,即我对 jq 语言/语法一无所知

【问题讨论】:

    标签: json jq


    【解决方案1】:

    您可以在.properties 对象上使用map_values 该函数返回对象,选择作为表达式的一部分给出的字段值。

    jq '.properties | map_values(.default)'
    

    【讨论】:

    • 这很好,但它只解决了一部分问题,如何递归地执行嵌套对象的 json 模式?
    • @LeeManGuard:您应该首先将这样一个嵌套的 JSON 发布到问题中。请更新您的真实示例,我会尝试修改我的答案
    • 我更新了 json,我尝试了类似这样的 def 项目: if .properties[].type != "object" then .properties | map_values(.default) 否则 .properties[] |项目结束;项目,但它根本不工作
    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2016-03-17
    • 2019-07-29
    相关资源
    最近更新 更多