You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBScript读取Google地理编码API返回JSON及提取参数方法咨询

在VBScript中解析Google Geocoding API的JSON响应

既然你已经能成功获取到Google Geocoding API返回的JSON字符串,接下来的解析工作其实可以借助JScript的原生JSON处理能力来完成——毕竟VBScript本身没有内置的JSON解析功能,这种跨语言调用的方式是最实用的解决方案之一。

下面是完整的示例代码,包含解析JSON、提取formatted_address以及遍历address_components数组的逻辑:

' 假设你已经通过API获取到的JSON字符串存储在此变量中
Dim rawJsonStr
rawJsonStr = "这里替换成你实际获取到的JSON内容"

' 创建ScriptControl对象,用于调用JScript的JSON解析功能
Dim jsonParser
Set jsonParser = CreateObject("ScriptControl")
jsonParser.Language = "JScript"

On Error Resume Next
' 转义JSON字符串中的单引号,避免Eval执行出错
Dim escapedJsonStr
escapedJsonStr = Replace(rawJsonStr, "'", "\'")
' 解析JSON为JScript对象
Dim apiResponse
Set apiResponse = jsonParser.Eval("JSON.parse('" & escapedJsonStr & "')")

' 处理解析错误
If Err.Number <> 0 Then
    WScript.Echo "JSON解析失败: " & Err.Description
    WScript.Quit
End If

' 检查API返回的状态是否正常
If apiResponse.status <> "OK" Then
    WScript.Echo "API请求未成功,状态码: " & apiResponse.status
    WScript.Quit
End If
On Error GoTo 0

' 获取第一个匹配的地址结果(通常我们只需要最相关的第一个结果)
Dim addressResult
Set addressResult = apiResponse.results(0)

' 提取并输出formatted_address
WScript.Echo "格式化地址: " & addressResult.formatted_address

' 遍历address_components数组,提取每个组件的信息
WScript.Echo vbCrLf & "地址组件详情:"
Dim component, idx
For idx = 0 To addressResult.address_components.length - 1
    Set component = addressResult.address_components(idx)
    WScript.Echo "组件" & (idx + 1) & ":"
    WScript.Echo "  完整名称: " & component.long_name
    WScript.Echo "  简称: " & component.short_name
    ' 借助JScript将types数组转为逗号分隔的字符串(VBScript无法直接处理JScript数组)
    WScript.Echo "  类型: " & jsonParser.Eval("'" & component.types & "'")
Next

' 释放对象资源
Set component = Nothing
Set addressResult = Nothing
Set apiResponse = Nothing
Set jsonParser = Nothing

关键细节说明

  • ScriptControl的作用:通过创建ScriptControl对象并指定语言为JScript,我们可以直接调用JScript原生的JSON.parse()方法来解析JSON字符串,这比自己写VBScript的JSON解析函数要可靠得多。
  • 单引号转义:在将JSON字符串传入Eval()之前,必须把字符串中的单引号替换为\',否则会破坏JS代码的语法结构导致解析失败。
  • API状态检查:一定要先判断status字段是否为OK,避免在API返回错误(比如密钥无效、地址找不到)时继续执行后续逻辑。
  • 处理JScript数组:VBScript无法直接遍历JScript数组的元素,所以我们通过length属性获取数组长度,再通过索引访问每个元素;对于types这种子数组,我们再次借助JScript将其转为逗号分隔的字符串输出。

内容的提问来源于stack exchange,提问作者Preethi Lakmali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:13:51