簡體   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