今日油价标号对照:89/92/95/98 汽油与 0 号柴油的字段映射
约 10 分钟 入门今日油价汽油标号柴油字段映射
# 今日油价标号对照:89/92/95/98 汽油与 0 号柴油的字段映射
接口/接入点:今日油价(apiCode=138)· 查询油价(138-46) · 免费 · 适用人群:车主产品前端开发者、内容运营 · 阅读时间:约 5 分钟 · 最后实测核对:2026-09-18
返回里一堆 `p` 开头的字段,最容易读错的是 `p0`。它代表 0 号柴油,不是「价格 0」。把字段和标号对上,前端展示和文案才不会出错。
## 核心要点
- `p89`/`p90`/`p92`/`p93`/`p95`/`p97`/`p98` 是汽油标号字段,数字就是标号本身。
- `p0` 是 0 号柴油,最后一个字符是油品标号,不是价格。
- 2026-09-18 实测的 31 条记录中,`p90`/`p93`/`p97` 全部为空字符串,`p89` 有 7 个省份返回 `"0.00"`。
## 字段与标号对照
| 字段 | 对应油品 | 说明 |
|---|---|---|
| `p89` | 89 号汽油 | 低标号,并非所有省份都有供应 |
| `p90` | 90 号汽油 | 历史标号 |
| `p92` | 92 号汽油 | 当前主流标号 |
| `p93` | 93 号汽油 | 历史标号 |
| `p95` | 95 号汽油 | 当前主流标号 |
| `p97` | 97 号汽油 | 历史标号 |
| `p98` | 98 号汽油 | 高标号 |
| `p0` | 0 号柴油 | 柴油,与汽油标号不是同一序列 |
把这个表贴在代码里当常量,比在业务逻辑里散落字符串判断更稳。
```python
GAS_LABELS = {
"p89": "89号", "p90": "90号", "p92": "92号", "p93": "93号",
"p95": "95号", "p97": "97号", "p98": "98号",
}
DIESEL_FIELD = "p0" # 0 号柴油,注意不是「价格 0」
```
## 现行标号与历史标号
面向用户展示时,建议分两组:当前在用的 89/92/95/98 放主区,90/93/97 放「历史标号」区或直接不展示。
理由是数据显示的分布:2026-09-18 实测取回 31 个省份,`p90`、`p93`、`p97` 三个字段在 31 条记录里全部为空字符串,没有一个省份有值。把它们放进主区,用户看到的会是一片「—」。
同一批实测里,`p89` 有 7 个省份返回 `"0.00"`,其余 24 个省份是正常价格。`"0.00"` 不是空字符串,直接判空会漏掉,需要按数值判断。
## 前端展示代码
Python(requests):
```python
import requests
resp = requests.post(
"https://route.showapi.com/138-46",
data={"appKey": "YOUR_APPKEY", "prov": "北京"},
timeout=5,
).json()
item = resp["showapi_res_body"]["list"][0]
CURRENT = ["p89", "p92", "p95", "p98"] # 当前标号放主区
LEGACY = ["p90", "p93", "p97"] # 历史标号,多为空
def show(raw):
if not raw or float(raw) <= 0:
return "—"
return f"{float(raw):.2f} 元/升"
print("现行汽油:")
for code in CURRENT:
print(f" {GAS_LABELS[code]}: {show(item.get(code))}")
print(f"0号柴油: {show(item.get(DIESEL_FIELD))}")
legacy = [f"{GAS_LABELS[c]}: {show(item.get(c))}" for c in LEGACY]
print("历史标号:", ",".join(legacy))
print("数据生成时间:", 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: "北京" }),
signal: AbortSignal.timeout(5000),
});
const item = (await resp.json()).showapi_res_body.list[0];
const labels = { p89: "89号", p90: "90号", p92: "92号", p93: "93号",
p95: "95号", p97: "97号", p98: "98号" };
const show = (raw) => (raw && Number(raw) > 0 ? `${Number(raw).toFixed(2)} 元/升` : "—");
for (const code of ["p89", "p92", "p95", "p98"]) {
console.log(`${labels[code]}: ${show(item[code])}`);
}
console.log(`0号柴油: ${show(item.p0)}`);
```
## 实测值参考
2026-09-18 查北京得到的一组数据,可用于对照你的解析结果:
| 字段 | 标号 | 实测值 |
|---|---|---|
| `p89` | 89 号汽油 | 7.76 |
| `p92` | 92 号汽油 | 8.29 |
| `p95` | 95 号汽油 | 8.83 |
| `p98` | 98 号汽油 | 10.33 |
| `p0` | 0 号柴油 | 8.02 |
| `p90` `p93` `p97` | 历史标号 | 空字符串 |
`p98` 高于 `p95`、`p95` 高于 `p92`,柴油价格与 92 号接近,这组关系可以用来做渲染前的数值合理性检查。价格上涨与下跌的颜色约定按你的产品规范处理,接口本身不返回展示样式。
## 适用条件与注意事项
- 标号字段返回的是字符串,展示前转数值。
- `p89` 在部分省份返回 `"0.00"`,表示该省这个标号没有有效价格,判空时一并处理。
- `p90`/`p93`/`p97` 属于历史标号,当前数据里为空字符串,不必为主区展示准备样式。
- 字段完整含义与两个接入点的结构差异见《今日油价返回字段对照:p89/p92/p0 与 ct 的含义与空值处理》。
## FAQ
**Q1:`p0` 是价格为 0 的意思吗?**
不是。`p0` 代表 0 号柴油,数字 0 是柴油标号。0 号柴油价格是正常数值,2026-09-18 实测北京为 8.02 元/升。
**Q2:92 号和 93 号哪个是现行的?**
92 号是当前主流标号,93 号是历史标号。2026-09-18 实测 31 个省份的 `p93` 全部为空字符串,`p92` 全部有值。
**Q3:为什么 `p89` 有的省是 `"0.00"`?**
表示该省这个标号没有有效价格。2026-09-18 实测有 7 个省份返回 `"0.00"`,展示时按无数据处理。
**Q4:接口返回价格单位吗?**
不返回。价格单位是元/升,展示时自行补充。
**Q5:可以只展示 92、95 和柴油吗?**
可以。这三个字段在这批数据里各省都有值,做简版卡片时足够。
## 相关能力 / 下一步阅读
- [今日油价返回字段对照:p89/p92/p0 与 ct 的含义与空值处理](https://www.showapi.com/guides/oilprice-fields-138)
- [今日油价:用 Python 查北京 92 号汽油价格的完整调用流程](https://www.showapi.com/guides/oilprice-quickstart-138)
- **本系列共 13 篇**:查看[今日油价指南总目录](https://www.showapi.com/guides/oilprice-guides-138)





