小米的天气API整理,返回的数据格式为json对象
天气API,返回的数据格式为json,通过各种方法解析
API来自APP的数据包抓包或者反汇编,所以各开发使用者不得用于商业用途,否则后果自负!
这个url访问会返回重庆市的天气信息
API地址:https://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=101040100
这个url访问会返回重庆市江津区的天气信息
API地址:https://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=101040500
如果需要查看其他地方的天气情况,请修改url后面的数值cityId=xxxxxxxx
请求后返回:

以上是关于天气的JSON数据示例。数据包括实时天气、预报天气、指数等信息。
与小米天气app对照可知,数据完全一致,这就说明请求的数据是正确的,请看下图

接下来可以对请求返回的JSON数据进行处理
请求江津区返回的JSON数据示例,优化一下排版,更好看
{
forecast:
{
city:请更换接口,
city_en:Please change api to v3,
cityid:101040500,
date:,
date_y:2023年08月29日,
fchh:07,
fl1:小于3级,
fl2:小于3级,
fl3:小于3级,
fl4:小于3级,
fl5:小于3级,
fl6:微风,
fx1:微风,
fx2:微风,
img1:,
img10:,
img11:,
img12:,
img2:,
img3:,
img4:,
img5:,
img6:,
img7:,
img8:,
img9:,
img_single:,
img_title1:多云,
img_title10:晴,
img_title11:晴,
img_title12:晴,
img_title2:多云,
img_title3:晴,
img_title4:多云,
img_title5:晴,
img_title6:多云,
img_title7:多云,
img_title8:多云,
img_title9:晴,
img_title_single:,
index:舒适,
index48:,
index48_d:,
index48_uv:,
index_ag:易发,
index_cl:较适宜,
index_co:舒适,
index_d:,
index_ls:适宜,
index_tr:适宜,
index_uv:中等,
index_xc:较适宜,
st1:,
st2:,
st3:,
st4:,
st5:,
st6:,
temp1:32℃~23℃,
temp2:32℃~22℃,
temp3:33℃~21℃,
temp4:32℃~21℃,
temp5:33℃~22℃,
temp6:0℃~0℃,
tempF1:,
tempF2:,
tempF3:,
tempF4:,
tempF5:,
tempF6:,
weather1:多云,
weather2:晴转多云,
weather3:晴转多云,
weather4:多云,
weather5:晴,
weather6:晴,
week:星期二,
wind1:微风,
wind2:微风,
wind3:微风,
wind4:微风,
wind5:微风,
wind6:微风},
realtime:{
SD:58%,
WD:西风,
WS:2级,
WSE:,
city:,
cityid:101040500,
isRadar:1,
radar:JC_RADAR_AZ9010_JB,
temp:30,
time:12:15,
weather:多云},
alert:[],
aqi:{
},
index:[{
code:fs,
details:属弱紫外辐射天气,长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。,
index:弱,
name:防晒指数,
otherName:},
{
code:ct,
details:天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。,
index:热,
name:穿衣指数,
otherName:},
{
code:yd,
details:阴天,较适宜进行各种户内外运动。,
index:较适宜,
name:运动指数,
otherName:},
{
code:xc,
details:较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。,
index:较适宜,
name:洗车指数,
otherName:},
{
code:ls,
details:天气阴沉,不利于水分的迅速蒸发,不太适宜晾晒。若需要晾晒,请尽量选择通风的地点。,
index:不太适宜,
name:晾晒指数,
otherName:}],
accu_cc:{
EpochTime:1693282500,
LocalObservationDateTime:2023-08-29T12:15:00+08:00,
Pressure:1011.0,
RealFeelTemperature:34.7,
RelativeHumidity:58,
UVIndex:5,
Visibility:14.5,
WindDirectionDegrees:270,
WindSpeed:11.3},
accu_f5:{
EffectiveEpochDate:1693285200,
EffectiveDate:2023-08-29T13:00:00+08:00,
DailyForecasts:[{
Date:2023-08-29T07:00:00+08:00,
EpochDate:1693263600,
Sun_Rise:2023-08-29T06:31:00+08:00,
Sun_EpochRise:1693261860,
Sun_Set:2023-08-29T19:21:00+08:00,
Sun_EpochSet:1693308060,
PrecipitationProbability:25},
{
Date:2023-08-30T07:00:00+08:00,
EpochDate:1693350000,
Sun_Rise:2023-08-30T06:32:00+08:00,
Sun_EpochRise:1693348320,
Sun_Set:2023-08-30T19:20:00+08:00,
Sun_EpochSet:1693394400,
PrecipitationProbability:25},
{
Date:2023-08-31T07:00:00+08:00,
EpochDate:1693436400,
Sun_Rise:2023-08-31T06:32:00+08:00,
Sun_EpochRise:1693434720,
Sun_Set:2023-08-31T19:19:00+08:00,
Sun_EpochSet:1693480740,
PrecipitationProbability:25},
{
Date:2023-09-01T07:00:00+08:00,
EpochDate:1693522800,
Sun_Rise:2023-09-01T06:33:00+08:00,
Sun_EpochRise:1693521180,
Sun_Set:2023-09-01T19:18:00+08:00,
Sun_EpochSet:1693567080,
PrecipitationProbability:25},
{
Date:2023-09-02T07:00:00+08:00,
EpochDate:1693609200,
Sun_Rise:2023-09-02T06:33:00+08:00,
Sun_EpochRise:1693607580,
Sun_Set:2023-09-02T19:17:00+08:00,
Sun_EpochSet:1693653420,
PrecipitationProbability:25}]},
today:{
cityCode:77097,
date:2023-08-29,
humidityMax:94,
humidityMin:58,
precipitationMax:0,
precipitationMin:0,
tempMax:30,
tempMin:22,
weatherEnd:阴,
weatherStart:多云,
windDirectionEnd:西风,
windDirectionStart:东南风,
windMax:2,
windMin:1},
yestoday:{
cityCode:77097,
date:2023-08-28,
humidityMax:98,
humidityMin:56,
precipitationMax:0,
precipitationMin:0,
tempMax:31,
tempMin:22,
weatherEnd:多云,
weatherStart:多云,
windDirectionEnd:东南风,
windDirectionStart:东北偏北风,
windMax:3,
windMin:2}}
这个即便是排版了也非常乱,数据非常多,完全不能使用,这就需要解析后在前端页面展示
要解析这个天气数据,你可以使用编程语言中的JSON解析库来处理JSON格式的数据。
具体操作步骤如下:
选择一种编程语言,例如Python、JavaScript,或者使用其他编程语言:
- Java: 使用Gson、Jackson、JSON.simple等库进行JSON解析。
- C#: 使用Newtonsoft.Json库进行JSON解析。
- Ruby: 使用JSON库进行JSON解析。
- PHP: 使用json_decode函数进行JSON解析。
- Go: 使用encoding/json包进行JSON解析。
- Swift: 使用Foundation库中的JSONSerialization进行JSON解析。
- C/C++: 使用第三方库,如RapidJSON、jsoncpp等进行JSON解析。
我这里使用Python解析JSON
# @刘洪材 2023年8月29日
# 示例代码:
import json
# 天气数据
weather_data = '{"forecast": {"city": "请更换接口", "city_en": "Please change api to v3", ...}}'
# 解析JSON数据
data = json.loads(weather_data)
# 提取需要的天气信息
city = data['forecast']['city']
date = data['forecast']['date_y']
temperature = data['forecast']['temp1']
weather = data['forecast']['weather1']
# 打印天气信息
print("城市:", city)
print("日期:", date)
print("温度:", temperature)
print("天气:", weather)
增加根据你的需求,你可以根据解析后的数据结构提取出更多的天气信息。记得根据你使用的编程语言选择相应的JSON解析库,并按照库的文档进行操作。
具体提炼内容如下,你可以写程序解析,然后在前端展示
以下是解析的天气预报:
- 城市:请更换接口
- 日期:2023年08月29日
- 星期:星期二
- 天气情况:多云转晴
- 温度范围:32℃~23℃
- 风力:微风 其他指数和信息如下:
- 防晒指数:属弱紫外辐射天气,长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。
- 穿衣指数:天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。
- 运动指数:阴天,较适宜进行各种户内外运动。
- 洗车指数:较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。
- 晾晒指数:天气阴沉,不利于水分的迅速蒸发,不太适宜晾晒。若需要晾晒,请尽量选择通风的地点。
也可以使用JavaScript解析,然后通过html把数据呈现在前端,请注意,由于涉及跨域请求,需要处理跨域访问的问题。这可以通过服务器端进行处理,或者在前端使用代理服务器来解决。
所用资料下载点击我 gitee.com/lhcdwz/tianqi
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)