尝试将 json 转换为字符串 (Athena AWS)

Lui*_*023 5 sql amazon-web-services presto amazon-athena trino

我有一个 json 格式如下: myjson = {"key":["value1","value2"]}和 a 我想将其转换为字符串
有时这个 json 可以返回 null: myjson = {"key":null}

我想获取字符串形式的值,但是当我尝试强制转换时出现错误cast(json_extract(myjson,'$.key') as varchar)。该错误表明无法将 '["value1","value2"]' 转换为 varchar。我认为这是因为双引号。我需要帮助来解决这个问题。

编辑1:

  • json_extract(myjson,'$.key') 的输出是一个json对象;
  • 我想要获取像“value1、value2”或“null”这样的字符串
  • 目前我不知道如何验证它是否为空

Gur*_*ron 2

您可以使用json_format(尽管根据以下用法,json_extract在某些情况下不使用强制转换/格式/等可能没问题):

-- sample data
with dataset(json_str) as (
    values ('{"key":["value1","value2"]}'),
        ('{"key":null}')
)

-- query
select json_format(json_extract(json_str,'$.key'))
from dataset;
Run Code Online (Sandbox Code Playgroud)

输出:

_col0
[“值1”,“值2”]
无效的

另一种选择是将结果转换为json_extractarray(varchar)使用array_join它(例如,请参阅此答案)。