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();

    }
}

  

 

輸出:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章