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,或者使用其他编程语言:

  1. Java: 使用Gson、Jackson、JSON.simple等库进行JSON解析。
  2. C#: 使用Newtonsoft.Json库进行JSON解析。
  3. Ruby: 使用JSON库进行JSON解析。
  4. PHP: 使用json_decode函数进行JSON解析。
  5. Go: 使用encoding/json包进行JSON解析。
  6. Swift: 使用Foundation库中的JSONSerialization进行JSON解析。
  7. 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

参考资料:天气API整理,返回的数据格式为json对象_weixin_30570101的博客-CSDN博客

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐