【问题标题】:BigQuery: How to unescape an extra-escaped/serialized JSON stringBigQuery:如何取消转义额外转义/序列化的 JSON 字符串
【发布时间】: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 等?

【问题讨论】:

    标签: sql json google-bigquery


    【解决方案1】:

    似乎简单的解决方案是在字符串上运行JSON_EXTRACT_SCALAR,然后是我真正想做的JSON_EXTRACT操作,例如

    SELECT 
      id
      , JSON_EXTRACT(JSON_EXTRACT_SCALAR(body, '$'), '$.value') AS value
    FROM 
      datatable
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 2016-04-14
      相关资源
      最近更新 更多