【问题标题】:Parse JSON using Regex in Google Sheet在 Google Sheet 中使用 Regex 解析 JSON
【发布时间】:2020-12-15 21:46:43
【问题描述】:

我尝试使用正则表达式解析 JSON 数据。我想获得“name”、“street”、“lat”和“lon”的值。 这个公式来获取它们的值:

  • 获取名称:

    =REGEXEXTRACT(REGEXREPLACE(JSON!$A$1,char(10)&"|"&char(34)&"|\s{2,}",""),"name:(.*?),街道”)

  • 获取街道:

    =REGEXEXTRACT(REGEXREPLACE(JSON!$A$1,char(10)&"|"&char(34)&"|\s{2,}",""),"street:(.*?)} ,位置")

  • 获取 lan 和 lon:

    =REGEXEXTRACT(REGEXREPLACE(JSON!$A$1,char(10)&"|"&char(34)&"|\s{2,}",""),"lat:(.*?),隆")

    =REGEXEXTRACT(REGEXREPLACE(JSON!$A$1,char(10)&"|"&char(34)&"|\s{2,}",""),"lon:(.*?)} ,城市”)

我的问题:我不知道在 L 列之前获取 E 列中的下一个数据。

我的表格https://docs.google.com/spreadsheets/d/1QaCT0X8iw6OjfzrPXPTc-r_HNscHIOQl5N9BBJjaaaY/edit#gid=1163290419

【问题讨论】:

  • 从 JSON 对象中检索值时,我认为使用 Google Apps 脚本创建的自定义函数可能是合适的。所以我提出了它。但如果这不是您期望的方向,我很抱歉。

标签: json regex google-apps-script google-sheets


【解决方案1】:

在您的情况下,我认为使用由 Google Apps 脚本创建的自定义函数可能是合适的。所以在这个答案中,我想建议使用自定义函数来实现你的目标。

示例脚本:

请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中,并将=SAMPLE((JSON!$A1)) 放入单元格中。这样,每个值都会被解析并放入一行的每个单元格中。

const SAMPLE = value => [JSON.parse(value).result.flatMap(({place_info: {name, street}, location: {lat, lon}}) => [name, street, lat, lon])];

结果:

注意:

  • 在您的示例电子表格中,有 2 个name2,street2,lat2,lon2。我认为第二个可能是name3,street3,lat3,lon3

参考资料:

【讨论】:

  • 太棒了,非常感谢。我认为如果我使用正则表达式来解析 json 数据,那就太复杂了。
  • @d'natsu 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多