sql具体写法:
select regexp_replace(regexp_extract(a.str_json, '^["]?(\\{\.*\\})["]?$', 1) --将json串最外层双引号去掉, '(?<=([^\\{:,]))(")(?=([^\\}:,]))', '”') --将json各项的值中有包含英文的双引号替换为中文双引号
此方法有一个弊端就是josn中key或者value中,如果英文双引号 ("
) 的前后紧邻英文冒号 (:
) 或者英文逗号 (,
),或者前面紧邻{
,后面紧邻}
的话英文下的双引号 ("
) 正则是匹配不到的。
参考文章:
一步完美解决Json数据里单引号双引号问题-正则表达式