Java: OpenWeatherMap json Deserialization of Java Objects

发布时间:2023年12月19日

openweathermap.json

{
    "coord": {
        "lon": 114.0683, "lat":22.5455
    }
  
    ,
    "weather":[ {
        "id": 803, "main":"Clouds", "description":"多云", "icon":"04d"
    }
  
    ],
    "base":"stations",
    "main": {
        "temp": 299.1, "feels_like":299.1, "temp_min":296.39, "temp_max":300.29, "pressure":1018, "humidity":79, "sea_level":1018, "grnd_level":1017
    }
  
    ,
    "visibility":10000,
    "wind": {
        "speed": 2.73, "deg":137, "gust":3.32
    }
  
    ,
    "clouds": {
        "all": 82
    }
  
    ,
    "dt":1702530001,
    "sys": {
        "type": 2, "id":2031340, "country":"CN", "sunrise":1702508106, "sunset":1702546869
    }
  
    ,
    "timezone":28800,
    "id":1795565,
    "name":"Shenzhen",
    "cod":200
}

实体类

/**
 * encoding: utf-8
 * 版权所有 2023 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * # Author    : geovindu,Geovin Du 涂聚文.
 * # IDE       : IntelliJ IDEA 2023.1 Java 17
 * # Datetime  : 2023 - 2023/12/15 - 20:05
 * # User      : geovindu
 * # Product   : IntelliJ IDEA
 * # Project   : javademo
 * # File      : Wind.java  类
 * # explain   : 学习
 **/
 
package Model;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
 
/**
 * 风情况
 */
public class Wind{
 
    /**
     *
     * 风速
     */
    public double speed;
    public int deg;
    public double gust;
}
 
 
 
 
/**
 * encoding: utf-8
 * 版权所有 2023 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * # Author    : geovindu,Geovin Du 涂聚文.
 * # IDE       : IntelliJ IDEA 2023.1 Java 17
 * # Datetime  : 2023 - 2023/12/15 - 20:04
 * # User      : geovindu
 * # Product   : IntelliJ IDEA
 * # Project   : javademo
 * # File      : Clouds.java  类
 * # explain   : 学习
 **/
 
package Model;
 
import java.util.Arrays;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
 
 
// import com.fasterxml.jackson.databind.ObjectMapper; // version 2.11.1
// import com.fasterxml.jackson.annotation.JsonProperty; // version 2.11.1
/* ObjectMapper om = new ObjectMapper();
Root root = om.readValue(myJsonString, Root.class); */
public class Clouds{
    public int all;
}
 
 
/**
 * encoding: utf-8
 * 版权所有 2023 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * # Author    : geovindu,Geovin Du 涂聚文.
 * # IDE       : IntelliJ IDEA 2023.1 Java 17
 * # Datetime  : 2023 - 2023/12/15 - 20:09
 * # User      : geovindu
 * # Product   : IntelliJ IDEA
 * # Project   : javademo
 * # File      : Coord.java  类
 * # explain   : 学习
 **/
 
package Model;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Coord{
    public double lon;
    public double lat;
}
 
 
/**
 * encoding: utf-8
 * 版权所有 2023 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * # Author    : geovindu,Geovin Du 涂聚文.
 * # IDE       : IntelliJ IDEA 2023.1 Java 17
 * # Datetime  : 2023 - 2023/12/15 - 20:07
 * # User      : geovindu
 * # Product   : IntelliJ IDEA
 * # Project   : javademo
 * # File      : Main.java  类
 * # explain   : 学习
 **/
 
package Model;
 
 
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
 
/**
 * 气温情况
 */
public class Main{
 
    /**
     * 温度  开尔文
     */
    public double temp;
    /**
     *
     */
    public double feels_like;
    /**
     *最低温度 开尔文
     */
    public double temp_min;
    /**
     *最高温度 开尔文
     */
    public double temp_max;
    /**
     *
     */
    public int pressure;
    /**
     *温度
     */
    public int humidity;
    public int sea_level;
    public int grnd_level;
}
 
/**
 * encoding: utf-8
 * 版权所有 2023 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * # Author    : geovindu,Geovin Du 涂聚文.
 * # IDE       : IntelliJ IDEA 2023.1 Java 17
 * # Datetime  : 2023 - 2023/12/15 - 20:06
 * # User      : geovindu
 * # Product   : IntelliJ IDEA
 * # Project   : javademo
 * # File      : Sys.java  类
 * # explain   : 学习
 **/
 
package Model;
 
 
public class Sys{
    public int type;
    public int id;
    /**
     * 国家名称
     */
    public String country;
    /**
     * 日出时间戳
     */
    public int sunrise;
    /**
     * 日落时间戳
     */
    public int sunset;
}
 
/**
 * encoding: utf-8
 * 版权所有 2023 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * # Author    : geovindu,Geovin Du 涂聚文.
 * # IDE       : IntelliJ IDEA 2023.1 Java 17
 * # Datetime  : 2023 - 2023/12/15 - 20:05
 * # User      : geovindu
 * # Product   : IntelliJ IDEA
 * # Project   : javademo
 * # File      : Weather.java  类
 * # explain   : 学习
 **/
 
package Model;
 
 
/**
 * 天气情况
 */
public class Weather{
    public int id;
    public String main;
    /**
     * 天气
     */
    public String description;
    /**
     * icon id 天气图标
     */
    public String icon;
}
 
/**
 * encoding: utf-8
 * 版权所有 2023 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * # Author    : geovindu,Geovin Du 涂聚文.
 * # IDE       : IntelliJ IDEA 2023.1 Java 17
 * # Datetime  : 2023 - 2023/12/15 - 20:06
 * # User      : geovindu
 * # Product   : IntelliJ IDEA
 * # Project   : javademo
 * # File      : WeatherInfo.java  类
 * # explain   : 学习
 **/
 
package Model;
 
 
import java.util.*;
import java.util.Arrays;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
 
/**
 * 天气主体实体类
 */
public class WeatherInfo{
    /**
     * 地球经纬度类
     */
    public Coord coord;
    /**
     *
     */
    public ArrayList<Weather> weather;
    public String base;
    public Main main;
    public int visibility;
    /**
     * 风
     */
    public Wind wind;
    public Clouds clouds;
    public int dt;
    public Sys sys;
    public int timezone;
    public int id;
    public String name;
    public int cod;
}

调用:

import Common.Env;
import Common.JsonHelper;
import BLL.UserBll;
import Model.WeatherInfo;
import Common.LanguageList;
import Common.FileHelper;
import BLL.openWeatherMap;
import Common.TimeHelper;
 
 
public class Main {
 
    /**
     *
     * @param args
     */
    public static void main(String[] args)
    {
 
 
        System.out.println("Hello java language world! 涂聚文!");
        try {
 
            String json = "{\"contacDetails\": {\n" + // JSON text in the file is written here
                    "            \"firstName\": \"Ram\",\n"
                    + "            \"lastName\": \"Sharma\"\n"
                    + "    },\n"
                    + "    \"phoneNumbers\": [\n"
                    + "            {\n"
                    + "                \"type\": \"home\",\n"
                    + "                \"phone-number\": \"212 888-2365\",\n"
                    + "            }\n"
                    + "    ]"
                    + "}";
 
            // writing JSON to file:"JSONExample.json" in cwd
            PrintWriter pw = new PrintWriter("JSONExample.json");
            pw.write(json);
            pw.flush();
            pw.close();
            String fileurl=Paths.get("openweathermap.json").toString();
            File file = new File(fileurl);
            String strjson=FileHelper.ReaderMethod(file);
            //System.out.println(strjson);
            //Reader reader = Files.newBufferedReader(Paths.get("openweathermap.json"));
            ObjectMapper om = new ObjectMapper();
            WeatherInfo geovin = om.readValue(strjson, WeatherInfo.class);
            System.out.println("城市:"+ geovin.name);
            System.out.println("湿度:"+geovin.main.humidity + '%');
            System.out.println("天气:"+geovin.weather.get(0).description);
            System.out.println("日出:"+TimeHelper.gettime(geovin.sys.sunrise));
            System.out.println("日落:"+TimeHelper.gettime(geovin.sys.sunset));
            System.out.println("温度:"+TimeHelper.getKTC(geovin.main.temp));
            System.out.println("最低温度:"+TimeHelper.getKTC(geovin.main.temp_min));
            System.out.println("最高温度:"+TimeHelper.getKTC(geovin.main.temp_max));
 
 
        }
        catch (Exception ex)
        {
            System.out.println(ex.getMessage());
        }
 
        System.out.println(LanguageList.zh_cn.getName());
        BLL.openWeatherMap weatherMap=new openWeatherMap();
        WeatherInfo geovindu=weatherMap.getObject("1795565");
        System.out.println("城市:"+ geovindu.name);
        System.out.println("湿度:"+geovindu.main.humidity + '%');
        System.out.println("天气:"+geovindu.weather.get(0).description);
        System.out.println("日出:"+TimeHelper.gettime(geovindu.sys.sunrise));
        System.out.println("日落:"+TimeHelper.gettime(geovindu.sys.sunset));
        System.out.println("温度:"+TimeHelper.getKTC(geovindu.main.temp));
        System.out.println("最低温度:"+TimeHelper.getKTC(geovindu.main.temp_min));
        System.out.println("最高温度:"+TimeHelper.getKTC(geovindu.main.temp_max));
 
 
 
        UserBll bll=new UserBll();
        UserBll.getCsvtoJson();
        UserBll.getUser();
        UserBll.getUserArry();
        UserBll.getWrite();
 
 
        System.out.println(Env.getEnv());
        System.out.println(Env.getColor());
        Env.getEnvList();
 
    }
}

输出:

文章来源:https://blog.csdn.net/geovindu/article/details/135024936
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。