技术博客
今日油价返回字段全解:p89/p90/p0/p92/p93/p95/p97/p98 与 ct 一文读懂

今日油价返回字段全解:p89/p90/p0/p92/p93/p95/p97/p98 与 ct 一文读懂

作者: 万维易源
2026-08-27
今日油价油价字段返回结构标号含义免费接口
# 今日油价返回字段全解:p89/p90/p0/p92/p93/p95/p97/p98 与 ct 一文读懂 > 接口/接入点:今日油价 · 查询油价(138-46) · 免费 · POST/GET · JSON · 适用人群:初级/中级开发者 · 阅读时间:约 6 分钟 ## TL;DR - 查询油价返回 `showapi_res_body.list[]`,每一项是一省油价,含 `prov` 和 8 个标号字段 + 更新时间 `ct`。 - 标号分两类:**汽油**(p89/p90/p92/p93/p95/p97/p98)与 **0 号柴油(p0)**;不存在 p91/p94/p96。 - 空字符串(如 `p90/p93/p97` 为 `""`)代表该省未公布此标号,不是接口报错。 ## Why 调参和渲染前,先把每个字段搞明白,能少踩很多坑:比如把 `p0` 当成「价格 0」、把空字符串当成「接口挂了」、把字符串价格直接拿去做加减。这篇把返回结构和标号含义一次性讲清。 ## What | 项 | 说明 | |----|------| | 接入点 | 查询油价(138-46) | | 返回结构 | `showapi_res_body` → `list[]` → 单省对象 | | 计费 | 免费 | | 更新频率 | 每日 7 点 | `list` 单省对象字段: | 字段 | 类型 | 含义 | |------|------|------| | `prov` | String | 省份名,如「北京」 | | `p89` | String | 89 号汽油 | | `p90` | String | 90 号汽油(历史标号) | | `p0` | String | **0 号柴油** | | `p92` | String | 92 号汽油(现行主流) | | `p93` | String | 93 号汽油(历史标号) | | `p95` | String | 95 号汽油(现行主流) | | `p97` | String | 97 号汽油(历史标号) | | `p98` | String | 98 号汽油 | | `ct` | String | 数据更新时间,如 `2022-09-07 10:06:12.867` | ## How 解析返回时,把 `list[0]` 的字段映射到前端展示。下面以 Python 展示「汽油标号 → 价格」的映射,跳过空值: ```python import requests resp = requests.post( "https://route.showapi.com/138-46", data={"appKey": "YOUR_APPKEY", "prov": "北京"}, timeout=10, ).json() item = resp["showapi_res_body"]["list"][0] gas_labels = { "p89": "89号", "p90": "90号", "p92": "92号", "p93": "93号", "p95": "95号", "p97": "97号", "p98": "98号", } for code, label in gas_labels.items(): price = item.get(code) if price: # 跳过空字符串 print(f"{label}汽油: {price} 元/升") print(f"0号柴油: {item['p0']} 元/升") print(f"更新时间: {item['ct']}") ``` cURL: ```bash curl -X POST "https://route.showapi.com/138-46?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "prov=%E5%8C%97%E4%BA%AC" ``` Node.js(fetch): ```javascript const resp = await fetch("https://route.showapi.com/138-46", { method: "POST", headers: { "content-type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ appKey: "YOUR_APPKEY", prov: "北京" }), }); const item = (await resp.json()).showapi_res_body.list[0]; const gas = { p89: "89号", p90: "90号", p92: "92号", p93: "93号", p95: "95号", p97: "97号", p98: "98号" }; for (const [k, v] of Object.entries(gas)) { if (item[k]) console.log(`${v}汽油: ${item[k]}`); } console.log(`0号柴油: ${item.p0}`); ``` ## 返回示例与解析 参考返回(节选): ```json { "showapi_res_body": { "ret_code": 0, "list": [ { "prov": "北京", "p90": "", "p0": "8.16", "p95": "8.97", "p97": "", "p98": "9.95", "p89": "7.88", "p92": "8.42", "p93": "", "ct": "2022-09-07 10:06:12.867" } ] } } ``` 注意 `p90/p93/p97` 为空字符串——某些省份对历史标号(90/93/97)可能不公布,前端应把空值显示为「—」而非报错。 ## 进阶/边界 - **标号分类**:现行国六标号是 89/92/95/98(汽油)+ 0 号(柴油);90/93/97 是旧标准的历史标号,接口同时返回便于兼容老系统。详见[《今日油价:89/92/95/98 与 90/93/97 有什么区别?标号含义科普》](https://www.showapi.com/guides/oilprice-grade-meaning-138)。 - **`p0` 是柴油不是「0 元」**:别把 `p0` 当成缺省值。 - **价格为字符串**:所有 `p*` 均为字符串,计算前 `parseFloat`。 ## FAQ **Q:为什么有的标号是空字符串?** A:代表该省未公布此标号价格(常见于历史标号 90/93/97),并非接口异常。 **Q:p0 是什么油?** A:0 号柴油,是柴油不是「价格 0」。 **Q:价格为什么是字符串?** A:接口所有 `p*` 字段都是字符串类型,前端做计算需先转数字。 **Q:有没有 p91/p94/p96?** A:文档返回结构中不存在这三个字段,只有 p89/p90/p92/p93/p95/p97/p98 与 p0。 ## 相关能力 / 下一步阅读 - [今日油价:5 分钟接入,从注册到查到北京 92 号汽油价格](https://www.showapi.com/guides/oilprice-quickstart-138) - [今日油价:89/92/95/98 与 90/93/97 有什么区别?标号含义科普](https://www.showapi.com/guides/oilprice-grade-meaning-138) - **本系列共 13 篇**:查看[今日油价开发指南总目录](https://www.showapi.com/guides/oilprice-guides-138)