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

输出:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF 基于TableControl的页面切换

文章目录 前言其它项目的UserControl切换TableControl添加按钮&#xff0c;隐去TableItem的Header 结论 前言 我想用WPF简单实现一个按钮视图切换的效果&#xff0c;但是我发现别人的实现效果非常的麻烦。 其它项目的UserControl切换 我网上找了个开源的项目&#xff0c;他是…

机器学习练习题

例1: 解&#xff1a; 最大似然估计&#xff1a; P &#xff08;男&#xff09; 8 / 20 0.4 &#xff0c; P &#xff08;女&#xff09; 12 / 20 0.6 P&#xff08;男&#xff09; 8/200.4&#xff0c;P&#xff08;女&#xff09; 12/20 0.6 P&#xff08;男&#xff0…

【AI美图】第03期效果图,AI人工智能全自动绘画,二次元美图欣赏

带来一组二次元人工智能自动绘图 对比分析&#xff1a; 标题手画二次元需要技巧&#xff1a; 二次元高清图片的绘制技巧主要包括以下几点&#xff1a; 线条的运用&#xff1a;在二次元风格的绘画中&#xff0c;线条的运用非常重要。要绘制出流畅、细腻的线条&#xff0c;需…

Linux---cp和mv命令选项

1. cp命令选项 命令选项说明-i交互式提示-r递归拷贝目录及其内容-v显示拷贝后的路径描述-a保留文件的原有权限 cp -i命令选项效果图: cp -r命令选项效果图: cp -v命令选项效果图: cp -a命令选项效果图: -a选项说明: -a 选项还支持拷贝文件夹并且文件夹中的文件权限不丢失 …

云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆

拓数派大模型数据计算系统&#xff08;PieDataComputingSystem&#xff0c;缩写&#xff1a;πDataCS&#xff09;在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算&#xff0c;「一份存储&#xff0c;多引擎…

采埃孚4D成像雷达拆解

1 基本信息 品牌&#xff1a;海外Tier1采埃孚 • 应用&#xff1a;上汽飞凡中高端纯电平台 • 数量&#xff1a;单车2个&#xff0c;安装在前后保内部 • 最远探测距离&#xff1a;350米 拆解来看&#xff0c;4D雷达主要可以分为4个部分&#xff0c;分别为数字接口板及结构件…

生产环境_Spark处理轨迹中跨越本初子午线的经度列

使用spark处理数据集&#xff0c;解决gis轨迹点在地图上跨本初子午线的问题&#xff0c;这个问题很复杂&#xff0c;先补充一版我写的 import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.{Row, SparkSession} import org.apache.spark.sql.func…

计算三叉搜索树的高度 - 华为OD统一考试

OD统一考试 分值: 100分 题解: Java / Python / C++ 定义构造三又搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入查找的规则是: 1.如果数小于节点的数减去500,则将数插入节点的左子树 2.如果数大于节点的数加…

node.js 启一个前端代理服务

文章目录 前言一、分析技术二、操作步骤2.1、下载依赖2.2、创建一个 serve.js 文件2.3、js 文件中写入以下代码 三、运行&#xff1a; node serve四、结果展示五、总结六、感谢 前言 有时候我们需要做一些基础的页面时&#xff0c;在研发过程中需要代理调用接口避免浏览器跨域…

【算法与数据结构】376、LeetCode摆动序列

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题难点在于要考虑到不同序列的情况&#xff0c;具体来说要考虑一下几种特殊情况&#xff1a; 1、上…

DSP的ADC简单笔记

DSP不需要复用GPIO&#xff0c;是单独的ADC引脚&#xff0c;与GPIO不共用 ADC时钟在PCLKCR0寄存器 所以还要配置HSPCLK HISPCP/HSPCLK寄存器 所以ADC的输入时钟&#xff0c;有固定公式&#xff1b; 控制寄存器1 简单配置3个东西&#xff1b; 控制寄存器2 设置为1软件触发 控…

构建强大应用的引擎:深度解析Spring Boot Starter机制

目录 引言1. Spring Boot Starter机制1.1 什么是Spring Boot Starter1.2 为什么要使用Spring Boot Starter1.3.应用场景1.4.自动加载核心注解说明 2. 综合案例配置类制作控制功能实现 总结 引言 在当今互联网时代&#xff0c;构建高性能、可维护的应用已成为开发者的首要任务。…