修复 SQL 中的无效 json

Posted

技术标签:

【中文标题】修复 SQL 中的无效 json【英文标题】:Fixind invalid json in SQL 【发布时间】:2021-11-20 09:55:32 【问题描述】:

我正在使用 json_extract_path_text 在 redshift 中解析 json,但此 json 无效(其中一个字段在字符串值内包含双引号):

"somefield": "4 *\\"`)(z"

有什么办法可以去掉这个引用并用其他值替换它(我并不真正关心这个特定的数据,因为它是错误的,但我想获取这个 json 的其他部分)。

【问题讨论】:

【参考方案1】:

您的字符串中的反斜杠数量似乎有误。您需要 1 或 1 来获取双引号,或 3 来获取反斜杠和双引号。但这不是真正的问题。

您可以使用 REPLACE() 函数去除 \" 文本。https://docs.aws.amazon.com/redshift/latest/dg/r_REPLACE.html

REPLACE(json_text, '\\"', '')

我相信 REPLACE() 不会做任何字符串解释,所以不需要额外的转义。

【讨论】:

以上是关于修复 SQL 中的无效 json的主要内容,如果未能解决你的问题,请参考以下文章

修复无效 JSON 的最有效方法

如何自动修复无效的 JSON 字符串?

如何修复无效的随机字符串以使其 JSON 有效

无法修复 JSONDecodeError:无效的控制字符

JSON 中的无效字符

错误修复 SQL.sdf - 数据库加密模式无效 [输入加密模式 = 0]