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

输出:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/248226.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI日报:OpenAI向新用户重新开放ChatGPT Plus订阅

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 总览Chatgptplus重新开放订阅#暂停原因功能 OpenAI的1000万美元安全人工智能拨款拨款初衷学术捐赠 总览 ChatGPT Plus再次向新用户开放&#xff0c;但目前每三小时限制发送40条消息。 OpenAI还宣布拨款1000万美元…

C++使用回调函数的两种方式

一.函数指针 #include <iostream>typedef void (*callback)(int ,int); class MyTest { public:void setCallback(callback cb){m_callback = cb;}void add(int a, int b){m_callback(a, b);}private:callback m_callback; };void onCallback(int a, int b) {std::cout …

MySQL DQL

目录 一、DQL概述 二、基础查询 三、条件查询 四、聚合查询 五、分组查询 六、排序查询 七、分页查询 八、其它测试 九、执行顺序 一、DQL概述 DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录。查询关…

DBA面试题

Oracle体系结构 &#xff08;1&#xff09;、Oracle实例内存中包含哪些部分? 答: sga与pga sga:是一组共享的内存区域&#xff0c;包含数据字典缓存、库缓存、重做日志缓冲区 Pga:为每个服务器进程分配的非共享内存&#xff0c;存储会话状态和私有SOL工作区 在Oracle数据库中&…

安装python

1.下载python 选择版本 选择可执行文件安装包 2.安装 输入python检查是否安装成功

gRPC基本用法:以人脸识别为例,搭建一个简单的gRPC服务

0. gRPC简介 相关网站&#xff1a; 中文文档&#xff1a;gRPC 官方文档中文版_V1.0 官网&#xff1a;gRPC 介绍&#xff08;以下引自官方文档中文版中的介绍&#xff09;&#xff1a; gRPC是一个高性能、开源和通用的 RPC 框架&#xff0c;面向移动和 HTTP/2 设计。目前提供 C…

4.qml 3D-Light、DirectionalLight、PointLight、SpotLight、AxisHelper类深入学习

今天我们学习灯光类 首先来学习Light类&#xff0c;它是所有灯光的虚基类&#xff0c;该类是无法创建的&#xff0c;主要是为子类提供很多公共属性。 常用属性如下所示&#xff1a; ambientColor : color&#xff0c;该属性定义在被该光照亮之前应用于材质的环境颜色。默认值…

neo4j如何创建多个数据库

1.在neo4j的压缩包解压位置找到neo4j.conf文件 "D:\neo4j\neo4j-community-3.5.5\conf\neo4j.conf"2.修改文件 新增dbms.activate_database**.db 再重新neo4j打开网页就进入到新建的数据库中 如果要切换&#xff0c;就把原来的注释掉就可以

Python移动未标注的图片数据集

Python移动未标注的图片数据集 前言前提条件相关介绍实验环境Python移动未标注的图片数据集情况一&#xff1a;有图&#xff0c;无标注文件代码实现输出结果 情况二&#xff1a;有图&#xff0c;有标注文件&#xff0c;但标注信息为空代码实现输出结果 情况一与情况二同时都考虑…

Leetcode 455 分发饼干

题意理解&#xff1a; 小孩的饭量&#xff1a; [1,2,7,10] 饼的大小&#xff1a; [1,3,5,7] 当饼的大小>小孩饭量时&#xff0c;小孩就能够吃饱。 求如何分配饼让更多的小孩子能够吃饱。 解题思路&#xff1a; 两种思路&#xff1a; 先把胃口小的孩子用较小的饼来喂饱—…

ida脚本环境开发配置idapythonidacpp三端环境(win,mac,linux)

ida脚本也有一段时间了,一直有个痛点是找不到比较好的方法热重载脚本来实时改动生效,导致开发效率老慢了。固总结下比较友好的环境搭配 使用ida热加载插件让你开发脚本更高效 github地址: GitHub - 0xeb/ida-qscripts: An IDA plugin to increase productivity when developi…

MATLAB 系统辨识 + PID 自动调参

MATLAB 系统辨识 PID 自动调参 Matlab R2021b下载安装详细教程Chapter1 MATLAB 系统辨识 PID 自动调参1. 导入数据2. 系统辨识3. PID 自动调参 Chapter2 MATLAB系统辨识Chapter3 【MATLAB】使用系统辨识工具箱(System Identification)建模Chapter4 matlab系统辨识工具箱及其反…

探索 Coinbase 二层链 Base 的潜力与风险

作者&#xff1a;lesleyfootprint.network 在不断变化的加密货币领域&#xff0c;Coinbase 已经确立了自己领先中心化交易所&#xff08;CEX&#xff09;的地位。然而&#xff0c;Coinbase 坚信去中心化是创造一个开放、全球范围内对每个人都可访问的加密经济的关键&#xff0…

Go map转json

今天分享的知识是 Go 接口。如果本文对你有帮助&#xff0c;不妨点个赞&#xff0c;如果你是 Go 语言初学者&#xff0c;不妨点个关注&#xff0c;一起成长一起进步&#xff0c;如果本文有错误的地方&#xff0c;欢迎指出&#xff01; 但当有的场景&#xff0c;要返回哪些字段…

工作记录-------实现实时排行榜的各种方法---12.14

实时积分排行榜 需求 提供一个用户积分排行榜–为 实时总积分榜, 只取前 10 名 。所有用户都能够查看当前排行榜,以及查看自己的 实时总积分排名 设计实现 先看下数据库的结构,总共有 2 个表:用户表 和 用户积分表。 用户表存储了用户信息,以及用户的总积分(实时更新…

电商控制台前台整合优化

前台逻辑 显示商品菜单输入id&#xff0c;进入某个商品检测登录和注册 根据登录和注册的状态&#xff0c;订单或者是购物车都需要登录。 登录&#xff1a;生成订单&#xff08;先生成订单表&#xff0c;再生成订单详情表&#xff09; 开发直接购买&#xff0c;加入购物车, …

计算机毕业设计 基于SpringBoot的日常办公用品直售推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

做性能测试必须掌握的基本概念和套路

经常听到人说&#xff0c;做个性能优化&#xff0c;吞吐量越高越好&#xff1b;或者做个性能测试&#xff0c;目标TPS是50000。可实际拿到这个信息&#xff0c;能够做性能测试吗&#xff1f;这个目标足够清晰吗&#xff1f;事实上&#xff0c;在我看来&#xff0c;未定义清晰 …

Ubuntu18.04.6下安装opencv库及OpenCV安装libjasper-dev依赖包错误

目录 01 解压安装包 02 安装cmake和依赖库 03 配置编译环境 01 解压安装包 创建一个名为Opencv的文件夹 mkdir opencv 将源码的压缩包复制到opencv目录下 将压缩包解压到opencv文件夹&#xff08;指定一个文件夹&#xff09; unzip opencv-3.4.11.zip -d opencv02 安装cm…

Web3.0:抗寻租的互联网平台经济

在数字世界的荒蛮时代&#xff0c;人类的数字大迁徙&#xff0c;纷乱而芜杂&#xff0c;充满着未知与蒙昧。 我们致敬先行者&#xff0c;感恩在黑暗中点亮火把&#xff0c;在泥泞中探索前行的道路。 我们以先行者为师&#xff0c;承续他们的智慧与勇气&#xff0c;在人类数字大…