我在Redshift表中有一些JSON数据,类型不同。一个示例条目是:
[{"value":["*"], "key":"testData"}, {"value":"["GGG"], key: "differentData"}]
我想归还基于密钥的vales,我该怎么做?我正在尝试做一些类似的事情
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'
)
应该返回字符串["*"]。