SQL:从混乱的 JSON 嵌套字段中提取反斜杠

SQL: Extract from messy JSON nested field with backslashes

我有一个 table,其中一些行具有正常的 JSON,一些行在 JSON 字段(反斜杠)

中具有转义值
id 对象
1 {"is_from_shopping_bag":true,"products":[{"price":{"amount":"18.00","currency":"USD","offset":100," amount_with_offset":"1800"},"product_id":"1234","数量":1}],"来源":"购物车"}
2 {"is_from_shopping_bag":"","产品":"[{\"product_id\":\"2345\",\"价格\":{\"货币\":\"USD\",\"金额\":\"140.00\",\"offset\":100},\"数量\":1}]"}

(注意:我需要在上面 table 中的反斜杠后包含一个 space 以便它们会显示在 github 生成的降价 table - - 我的实际 table 不包括反斜杠和引号字符之间的 spaces)

我正在 Hive 中执行 sql 查询以获取 'currency' 字段。

目前我可以运行

SELECT
    id,
    JSON_EXTRACT(obj, '$.products[0].price.currency')
FROM my_table

这会给我第一行的正确输出,但在第二行给我一个 NULL

id 对象
1 “美元”
2

从第二行获取货币字段的最佳方法是什么?在尝试 JSON_EXTRACT 相关数据之前,有没有办法清理字段并删除反斜杠? 我可以使用 REPLACE 将“\”替换为“”,但这是最有效的方法吗?

使用 regexp_replace\" 替换为 ",如下所示:

regexp_replace(obj,'\\"','"')