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

如何编写JSON Schema验证Google GeoCoding API的指定地址组件?

修正后的Google Geocoding API JSON Schema

核心修正点

  1. 将错误定义为字符串类型的types修正为字符串数组,匹配API实际返回结构
  2. 新增验证规则:确保address_components数组中存在分别包含locality、country、postal_code的对象(允许同时存在其他类型对象)

完整Schema代码

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["results"],
  "properties": {
    "results": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["address_components"],
        "properties": {
          "address_components": {
            "type": "array",
            "minItems": 1,
            // 确保数组覆盖指定的三个地址类型
            "allOf": [
              {
                "contains": {
                  "type": "object",
                  "required": ["types"],
                  "properties": {
                    "types": {
                      "type": "array",
                      "contains": {"const": "locality"}
                    }
                  }
                }
              },
              {
                "contains": {
                  "type": "object",
                  "required": ["types"],
                  "properties": {
                    "types": {
                      "type": "array",
                      "contains": {"const": "country"}
                    }
                  }
                }
              },
              {
                "contains": {
                  "type": "object",
                  "required": ["types"],
                  "properties": {
                    "types": {
                      "type": "array",
                      "contains": {"const": "postal_code"}
                    }
                  }
                }
              }
            ],
            "items": {
              "type": "object",
              "required": ["long_name", "short_name", "types"],
              "properties": {
                "long_name": {"type": "string"},
                "short_name": {"type": "string"},
                // 修正types为字符串数组,支持多类型标记
                "types": {
                  "type": "array",
                  "items": {"type": "string"},
                  "minItems": 1
                }
              }
            }
          }
        }
      }
    }
  }
}

关键规则说明

  • types字段:修正为数组类型,每个元素为字符串,和Google API返回的结构完全匹配(API中types是包含多个类型标记的数组,比如["locality", "political"])
  • address_components的allOf+contains组合:
    • 每个contains规则检查数组中至少存在一个对象的types数组包含指定类型值
    • 三个contains分别对应locality、country、postal_code,确保这三个核心类型都被覆盖
  • 允许address_components中存在其他类型的对象,只要满足上述三个核心验证条件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:07:08