繁体   English   中英

使用 jolt 转换从 json 中提取值

[英]Extracting value from json using jolt transformation

我有一个 json 对象:

{

  "Data" : "{field1: [x,y],
               field2: z}",
}

输出json:

{

  "field3": "z"

}
[
  {
    "operation": "shift",
    "spec": {
      "Data": {
        "*field2:*}*": {
          "$(0,2)": "field3"
        }
      }
    }
  }
]

这里“Data”的值是一个完整的字符串而不是 json,因此我必须将它分成通配符,现在规范中的第二个“*”给了我值“z”。 有没有更好的方法来做同样的事情,比如在 field2 之前或之后有一个新字段,那么我不必修改这个正则表达式。

首先,这不像是 JOLT 中要解决的问题,而是应该提取Data并将其序列化为 JSON。

那就是说我已经设法使某些东西起作用,内联解释:

[
  //Remove {
  {
    "operation": "shift",
    "spec": {
      "Data": {
        "{*": {
          "$(0,1)": "Data"
        }
      }
    }
  },
  //Remove }
  {
    "operation": "shift",
    "spec": {
      "Data": {
        "*}": {
          "$(0,1)": "Data"
        }
      }
    }
  },
  // Split by ,
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Data": "=split(',', @(2,Data))"
    }
  },
  // Trim
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Data": {
        "*": "=trim"
      }
    }
  },
  // Select field2
  {
    "operation": "shift",
    "spec": {
      "Data": {
        "*": {
          "field2:*": {
            "$(0,1)": "field3"
          }
        }
      }
    }
  },
  // Trim again
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=trim"
    }
  }
]


针对:

{
  "Data": "{field1: [x,y], field2: z}"
}

{
  "Data": "{ field2: z, field1: [x,y]}"
}

{
  "Data": "{field1: [x,y], field2: z, field3: [x,y]}"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM