首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >额外的反斜杠以及jsonencode数组对象的引号

额外的反斜杠以及jsonencode数组对象的引号
EN

Stack Overflow用户
提问于 2022-02-26 15:42:28
回答 1查看 1.1K关注 0票数 0

在terraform中,我试图使用null_resource通过curl命令进行PUT调用,并在local_exec提供程序中执行命令。请求的主体是json数组。

该命令要求数据采用字符串格式。我的数据在本地是元组的。我使用jsonencode将tupple序列化为字符串并传递给curl。但是在jsonencode中,形成的字符串在json字符串中的每个“前面都有一个附加的\前缀。

例如:预期的json字符串是:

代码语言:javascript
复制
"[{"key-1" : "value-1", "key-2": "value-2"}]"

但是,在jsonencode之后,格式化的字符串如下:

代码语言:javascript
复制
"[{\"key-1\" : \"value-1\", \"key-2\": \"value-2\"}]"

附加反斜杠与引号一起添加。

由于格式错误的请求主体,API返回糟糕的请求响应。

我们如何正确地序列化tupple/list以更正Terraform中的json字符串并传递给curl命令?

这是我的null_resource:

代码语言:javascript
复制
resource "null_resource" "call_API" {
  for_each = { for x in local.array: x.name => {
    name = x.name
    vars = jsonencode(x.vars)
  } }
  provisioner "local-exec" {
    command = <<EOF
        curl -X PUT ${var.url} -d ${each.value.vars}  -H 'Content-Type:application/json' -H 'Authorization:${local.bearer_token}'
        EOF
  } 
EN

回答 1

Stack Overflow用户

发布于 2022-02-27 01:10:31

我想我理解你想传递这个变量

代码语言:javascript
复制
"[{"key-1" : "value-1", "key-2": "value-2"}]"

你试过用EOF吗?你可以做这样的事

代码语言:javascript
复制
variable "body" {
  type = "string"
}

variable = <<EOF
"[{"key-1" : "value-1", "key-2": "value-2"}]"
EOF

或者用EOT,老实说,我不记得是哪一种工作

编辑:如果json不是静态的,并且从其他模块或其他模块接收到它,则可以尝试在EOFs中展开变量。

代码语言:javascript
复制
body = <<EOF
${var.json}
EOF
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71278023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档