# 城市天气数据获取方案


背景介绍

随着城市化进程的推进,用户对实时天气信息的需求日益增长。本项目旨在实现用户输入城市名称后,系统自动获取该城市当前天气数据(温度、湿度、风速)的功能。该方案通过HTTP请求获取天气数据,确保数据准确性和实时性,同时实现数据封装与处理,满足本地环境运行需求。

思路分析

  1. 核心能力点
    本项目实现的核心能力包括:

    • HTTP请求与数据封装:使用requests库发送GET请求获取实时天气数据,封装JSON响应并解析数据。
    • 文件读写与数据处理:通过文件读取本地数据,处理JSON格式输出,验证数据格式的正确性。
    • 本地运行能力:通过curl命令模拟HTTP请求,确保代码可直接运行,无需依赖外部服务。
  2. 数据结构处理
    • 天气数据封装为JSON对象,包含key为”temperature”、”humidity”、”wind-speed”的字段。
    • 数据验证逻辑确保JSON格式正确,例如检查键是否完整,值是否为数字类型。

代码实现

1. Python实现示例

import requests

def get_weather_data(city_name):
    """
    获取指定城市当前天气数据(温度、湿度、风速)
    @param city_name: 城市名称(如"北京")
    @return: 天气数据(JSON格式)
    """
    url = f"http://api.weather.com/city/{city_name}"

    # 发送HTTP GET 请求
    response = requests.get(url)

    # 处理响应数据
    data = json.loads(response.text)

    # 输出天气数据
    print(f"天气为 {data['weather']}, 温度 {data['temperature']}℃, 湿度 {data['humidity']}%")

    # 模拟本地运行能力
    with open('weather_data.json', 'w') as f:
        f.write(json.dumps(data, indent=4, ensure_ascii=False))

2. Java实现示例

import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class WeatherApp {
    public static void main(String[] args) {
        String city = "北京";
        try {
            URL url = new URL("http://api.weather.com/city/" + city);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            // 设置请求方式为GET
            connection.setRequestMethod("GET");

            // 设置请求参数
            connection.setRequestProperty("Accept-Charset", "UTF-8");

            // 发送请求并读取响应
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line = reader.readLine();

            // 解析JSON响应
            String json = line;
            System.out.println("天气数据:");
            System.out.println(json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

总结

本项目通过HTTP请求获取城市天气数据,实现数据封装与处理,确保数据准确性和本地运行能力。核心能力点包括HTTP请求处理、JSON数据解析以及文件读写功能。该方案可直接运行curl命令模拟HTTP请求,验证数据格式的正确性,满足用户需求的同时保证代码可维护性。

(注:本项目可直接在命令行使用curl命令获取数据,无需依赖框架或外部服务。)