技术博客
行政区划查询返回字段全解:wholeName / 各级编码 / 拼音一文读懂

行政区划查询返回字段全解:wholeName / 各级编码 / 拼音一文读懂

作者: 万维易源
2026-08-31
行政区划查询返回字段编码拼音
# 行政区划查询返回字段全解:wholeName / 各级编码 / 拼音一文读懂 > 接口 / 接入点:行政区划查询(apiCode 1149)· 区域查询 1149-1 / 子区域查询 1149-2 · 免费服务 > 请求方式:POST / GET · 返回格式:JSON · 适用人群:已接入开发者、需要字段语义的工程师 · 阅读时间:约 6 分钟 ## 核心要点 - 业务数据全部包在 `showapi_res_body` 里,`data` 是数组,每条代表一个区域。 - 编码字段成体系:`provinceId` / `cityId` / `countyId` / `townId` / `villageId` / `parentId` / `id`,呈「上级 → 本级」层级关系。 - `wholeName` 是逗号分隔全称,`lon` / `lat` 已废弃,`location` 未说明坐标系,地图需求请走外部地理编码。 ## Why:为什么要把字段搞清楚 接入后第一道坎往往是「返回这么多字段,哪个是我要的?」——做展示用 `wholeName`,做联动用 `id`/`parentId`,做拼音检索用 `pinYin`/`simplePy`,做地址校验用 `areaCode`/`zipCode`。这一篇把字段语义一次讲清,省得你每篇都翻文档。 ## What:返回结构速览 系统级封装字段(所有 ShowAPI 接口通用): | 字段 | 类型 | 说明 | |------|------|------| | showapi_res_code | Number | 系统级状态码,0 成功 | | showapi_res_error | String | 系统级错误信息 | | showapi_res_id | String | 本次请求 ID | | showapi_res_body | Object | 业务数据容器 | `showapi_res_body` 业务字段: | 字段 | 类型 | 说明 | |------|------|------| | ret_code | Number/String | 业务级状态码,0 成功 | | page | Number | 当前页 | | allNum | Number | 总数据条数 | | maxSize | Number | 每页最大 20 条 | | allPage | Number | 最大分页值 | | msg | String | 提示信息 | | upgrade_info | String | 使用及更新要点 | | data | Object[] | 区域列表 | `data[]` 单项字段(区域查询 1149-1 与子区域查询 1149-2 略有差异,下表标注): | 字段 | 说明 | 备注 | |------|------|------| | id | 区域 id(本级编码) | 下钻时作 `parentId` 使用 | | parentId | 上级编码 | 与 `id` 形成层级链 | | provinceId | 省级编码 | 如 530000000000 | | cityId | 市级编码 | — | | countyId | 区县编码 | 子区域查询也返回 | | townId | 乡镇 id | 区域查询 1149-1 有,子区域查询 1149-2 无 | | villageId | 村委会 / 乡镇 id | — | | areaName | 区域名称 | 如「昆明市」 | | simpleName | 区域名简称 | 如「昆明」 | | wholeName | 全称(逗号分隔) | 如「中国,云南省,昆明市」 | | areaCode | 区号 | 如 0871 | | zipCode | 邮编 | 如 650000 | | level | 行政级别 | 1省 2市 3区县 4乡镇 5村委会(区域查询);子区域查询返回 1~3 | | pinYin | 全拼 | 如 kun ming shi | | simplePy | 简拼 | 如 KM | | prePinYin | 拼音首字母 | 如 K | | remark | 备注 | 仅子区域查询 1149-2 返回 | | lon / lat | 经度 / 纬度 | **已废弃**,勿用于地图 | | location | 坐标 | 文档未说明坐标系与格式,示例为空 | ## How:用字段拼出层级 `parentId` 与各级编码的关系是固定的:省级的 `parentId` 为空(或本国根),市级的 `parentId` 等于其 `provinceId`,区县的 `parentId` 等于其 `cityId`,以此类推。利用这个关系,你可以从任意一条记录反推它的完整上级链。 ```python import requests def query(area_name, level="2"): r = requests.get("https://route.showapi.com/1149-1", params={"appKey": "YOUR_APPKEY", "areaName": area_name, "level": level}, timeout=10) body = r.json()["showapi_res_body"] return body["data"] for item in query("昆明市"): print("全称:", item["wholeName"]) print("本级id:", item["id"], "| 上级parentId:", item["parentId"]) print("省编码:", item["provinceId"], "| 市编码:", item["cityId"], "| 区号:", item["areaCode"]) ``` ## 返回示例(子区域查询 1149-2) ```json { "showapi_res_body": { "ret_code": "0", "data": [ { "provinceId": "440000000000", "simpleName": "荔湾", "areaCode": "020", "cityId": "440100000000", "remark": "", "pinYin": "Liwan", "prePinYin": "L", "parentId": "440100000000", "level": "3", "areaName": "荔湾区", "simplePy": "Lw", "zipCode": "510000", "countyId": "440103000000", "wholeName": "", "villageId": "" } ], "page": "1", "allNum": "1", "maxSize": "20", "allPage": "1" } } ``` 注意:子区域查询的 `ret_code` / `page` / `allNum` 等字段在文档示例中为**字符串**类型,区域查询为**数字**类型。解析时建议做容错(如 `int(x)` 前先判断),不要假设固定类型。 ## 进阶 / 边界 - `townId` 只在区域查询(1149-1)出现;做「乡镇级」下钻时优先用区域查询 + `level=4/5`。 - `wholeName` 在区域查询有值、子区域查询示例为空——若需要全称,建议在区域查询层取。 - 不要依赖 `lon`/`lat`(已废弃)和 `location`(未说明格式)做地理计算。 ## FAQ **Q:data 是对象还是数组?** 是**数组**(Object[])。即使只命中一条,也要按数组遍历。 **Q:为什么有的字段是空字符串?** 乡镇 / 村委会等下级编码在上级区域里为空(如市级记录的 `countyId` 为空),这是正常的层级空缺,不是接口 bug。 **Q:ret_code 在文档里是 Number 还是 String?** 两个接入点不一致:区域查询示例为 Number,子区域查询示例为 String。解析时做类型容错更稳妥。 **Q:lon / lat 还能用吗?** 页面明确标注「废弃」,建议忽略;需要经纬度请使用外部地理编码服务。 ## 相关能力 / 下一步阅读 - [行政区划查询:5 分钟接入,从注册到第一条区划数据](https://www.showapi.com/guides/region-query-quickstart-1149) - [行政区划查询子区域查询实战:用 parentId 逐级下钻省→市→区→街道](https://www.showapi.com/guides/region-query-subregion-1149) - **本系列共 11 篇**:查看[行政区划查询指南总目录](https://www.showapi.com/guides/region-query-guides-1149)