【问题标题】:Extracting value from json using jolt transformation使用颠簸变换从json中提取值
【发布时间】:2018-12-05 08:36:51
【问题描述】:

我有一个 json 对象:

{

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

输出json:

{

  "field3": "z"

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

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

【问题讨论】:

    标签: json transformation jolt


    【解决方案1】:

    首先,这感觉不像是要在 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]}"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2019-02-03
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      相关资源
      最近更新 更多