Redshift JSON 解析

Redshift JSON Parsing

我在 Redshift table 中有一些 JSON 类型字符不同的数据。一个示例条目是:

[{"value":["*"], "key":"testData"}, {"value":"["GGG"], key: "differentData"}]

我想 return 基于键的值,我该怎么做?我正在尝试做类似

的事情

json_extract_path_text(column, 'value') 但不幸的是它出错了。有什么想法吗?

所以第一个问题是您的字符串无效 JSON。存在不匹配和缺失的引号。我想你的意思是:

[{"value":["*"], "key":"testData"}, {"value":["GGG"], "key": "differentData"}]

我不知道这是数据问题还是转录错误,但除非 json 文本有效,否则这些功能将无法使用。

接下来要考虑的是,在顶层,这个 json 是一个数组,因此您需要使用 json_extract_array_element_text() 函数来获取数组的一个元素。例如:

json_extract_array_element_text('json string', 0)

所以把它放在一起我们可以提取第一个“值”(未测试):

json_extract_path_text(
  json_extract_array_element_text(
    '[{"value":["*"], "key":"testData"}, {"value":["GGG"], "key": "differentData"}]', 0
  ), 'value'
)

应该return字符串["*"].