【发布时间】:2016-06-06 14:33:24
【问题描述】:
在包含“[]”作为数据的字段上调用 json_extract_path_text(my_field, 'some_key') 时遇到问题。
这是一个有效的 JSON 字符串,但这个函数只是抛出一个错误。
-----------------------------------------------
ERROR: JSON parsing error
DETAIL:
error: JSON parsing error
code: 8001
context: invalid json object []
query: 0
location: funcs_json.h:117
-----------------------------------------------
对于这个问题有什么好的解决方法吗?我可能会添加一个AND my_field != '[]' 检查,但谁知道还需要检查什么?
【问题讨论】:
-
您真的在使用 Redshift 吗? 整个 json 字段除了
[]什么都没有,即json 是一个空数组吗?因为如果是这样,数组就不是 json 对象,无论是否为空,它都是一个数组。无法获取数组的字段。 -
空数组 [] 是来自 JSONLint 的有效 JSON 字符串,不是吗?
-
是的,
[]是一个有效的 json document,但它不是一个 json object。您不能在数组中查找键,它们只有索引。也就是说,PostgreSQL(至少 9.5)允许这样做。所以我猜这是一个红移问题。
标签: json amazon-redshift