Java: OpenWeatherMap json Deserialization of Java Objects
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(); } }
输出:
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)