BigQuery:如何取消转义额外转义/序列化的 JSON 字符串
Posted
技术标签:
【中文标题】BigQuery:如何取消转义额外转义/序列化的 JSON 字符串【英文标题】:BigQuery: How to unescape an extra-escaped/serialized JSON string 【发布时间】:2021-12-15 18:36:48 【问题描述】:我正在处理一个数据集,其中从服务中提取 JSON 字符串,并经过额外的字符串提取/处理层,因此字符串本身中的 JSON 语法已被转义。
作为示例更容易显示 - 这是一个 CSV,其中 body
是 JSON 格式的字符串:
id,body
1,"""name"":""hello"",""value"":9"
2,"""value"":42"
这是我正在使用的:
id,body
1,"""\""name\"":\""hello\"",\""value\"":9"""
2,"""\""value\"":42"""
如果我不得不猜测,就好像源服务正在拉入 body
的 JSON 格式字符串,就好像它期望被序列化为另一个 JSON 字符串中的字符串值一样。
无论如何,有没有一种直接的方法来取消转义这个字符串,以便我可以正常使用 JSON_EXTRACT 等?
【问题讨论】:
【参考方案1】:似乎简单的解决方案是在字符串上运行JSON_EXTRACT_SCALAR
,然后是我真正想做的JSON_EXTRACT
操作,例如
SELECT
id
, JSON_EXTRACT(JSON_EXTRACT_SCALAR(body, '$'), '$.value') AS value
FROM
datatable
【讨论】:
以上是关于BigQuery:如何取消转义额外转义/序列化的 JSON 字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何安全地为 bigquery 节点插入转义用户输入?可以在 bigquery.insert 节点库上使用参数化查询吗?