【问题标题】:How to replace text for some properties using jolt如何使用 jolt 替换某些属性的文本
【发布时间】:2019-07-19 22:34:25
【问题描述】:

我正在使用 jolt 来进行一些转换,我已经能够做到这一点,但是我在尝试替换我的 JSON 文件的某些属性中的某些文本时遇到了一些问题。

我尝试用 / 分割值,然后将我需要的部分与附加文本连接起来,不幸的是,这不起作用。

输入 JSON

{
"components" : {
  "values" : {
    "value1" : {
       "$path" : "1/2/3/bear"
    },
     "value2" : {
       "$path" : "1/2/3/cat"
    },
    "value3" : {
       "$path" : "1/2/3/lion"
    }
  }
}

}

我想使用 $path 的最后一部分将 '#/myvalue/' 添加到每个 $path 值。

预期结果

{
"components" : {
  "values" :
    "value1" : {
       "$path" : "#/myvalue/bear"
    },
     "value2" : {
       "$path" : "#/myvalue/cat"
    },
    "value3" : {
       "$path" : "#/myvalue/lion"
    }
 }
}

}

我尝试了以下一种方法来获取价值,但它没有按预期工作。

[
 {
    "operation": "shift",
    "spec": {
        "components": {
            "values": {
                "*": {
                    "\\$path": { //This key has de $ sign
                        "*/*/*/*": {
                            "$(0,4)": "\\$path" //I need to take the four part and assign that to the \\path value
                        }
                    }
                }
            }
        }
    }
}, {
    "operation": "modify-overwrite-beta",
    "spec": {
        "components": {
            "values": {
                "*": {
                    "\\$path": "=concat('#/myvalue/', @(1,\\$path))"
                }
            }
        }
    }
}

]

【问题讨论】:

    标签: java json jolt


    【解决方案1】:

    您只需要使用 jolt 提供的一些功能(如拆分、最后一个元素、连接等)来操作原始路径字符串

    这个规范可以解决问题:

     [{
       "operation": "modify-overwrite-beta",
       "spec": {
         "components": {
           "values": {
             "*": {
               "temp": "=split('/',@(1,\\$path))",
               "last_element": "=lastElement(@(1,temp))",
               "\\$path": "=concat(#/myvalue/,@(1,last_element))"
             }
           }
         }
       }
    }, {
       "operation": "shift",
       "spec": {
         "components": {
           "values": {
             "*": {
               "\\$path": "components.values.&1.&"
             }
           }
         }
       }
    }]
    

    【讨论】:

      猜你喜欢
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      相关资源
      最近更新 更多