读取xml

将json文件读取成字符串

public static String getJsonStr(File jsonFile){try {FileReader fileReader = new FileReader(jsonFile);Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");int ch = 0;StringBuffer sb = new StringBuffer();while ((ch = reader.read()) != -1) {sb.append((char) ch);}fileReader.close();reader.close();return sb.toString();} catch (IOException e) {e.printStackTrace();return null;}
}

main方法解析json文件,转化成自定义对象集合并保存至数据库

public void Task1() {String json = "D:\\media\\resource\\RadarPic\\城镇预报数据.json";File jsonFile = new File(json);//通过上面那个方法获取json文件的内容String jsonData = this.getJsonStr(jsonFile);SevpChnWefcRffc sevpChnWefcRffc = JsonConverter.jsonString2Bean(jsonData, SevpChnWefcRffc.class);List<SevpChnWefcRffcItem> ds = sevpChnWefcRffc.getDs();for (List<SevpChnWefcRffcItem> l1 : ListUtils.splitList(ds, 20)) {if (l1.size() > 0) {int row1 = sevpChnWefcRffcMapper.insertSevpChnWefcRffc(l1);}}
}

json工具类

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;public class JsonConverter {private static ObjectMapper mapper = new ObjectMapper();public static String bean2Json(Object obj) {try {return mapper.writeValueAsString(obj);} catch (JsonProcessingException e) {e.printStackTrace();return null;}}public static <T> T jsonString2Bean(String jsonStr, Class<T> objClass) {if (jsonStr == null) return null;try {return mapper.readValue(jsonStr, objClass);} catch (IOException e) {e.printStackTrace();return null;}}@JsonIgnoreProperties(ignoreUnknown = true)public static <T> T jsonObject2Bean(Object jsonObject, Class<T> bean) {mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);return mapper.convertValue(jsonObject, bean);}public static JsonNode jsonString2JsonNode(String jsonString) {if (jsonString == null) return null;try {return mapper.readTree(jsonString);} catch (IOException e) {e.printStackTrace();return null;}}public static Map<String, Object> jsonNode2HashMap(JsonNode jsonNode) {Map<String, Object> map = new HashMap<>();if (jsonNode.isObject()) {Iterator<Map.Entry<String, JsonNode>> fieldsIterator = jsonNode.fields();while (fieldsIterator.hasNext()) {Map.Entry<String, JsonNode> field = fieldsIterator.next();String key = field.getKey();JsonNode value = field.getValue();if (value.isValueNode()) {map.put(key, value.asText());} else if (value.isObject() || value.isArray()) {map.put(key, jsonNode2HashMap(value));}}} else if (jsonNode.isArray()) {int i = 0;for (JsonNode node : jsonNode) {if (node.isValueNode()) {map.put(Integer.toString(i), node.asText());} else if (node.isObject() || node.isArray()) {map.put(Integer.toString(i), jsonNode2HashMap(node));}i++;}}return map;}/*** 将JSON数据格式化并保存到文件中* @param jsonData 需要输出的json数* @param filePath 输出的文件地址* @return 结果*/public static boolean saveJsonFile(Object jsonData, String filePath) {String content = JSON.toJSONString(jsonData, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat);boolean flag = true;try {File file = new File(filePath);if (!file.getParentFile().exists()) {boolean mkdirs = file.getParentFile().mkdirs();}if (file.exists()) {boolean delete = file.delete();}boolean newFile = file.createNewFile();Writer write = new OutputStreamWriter(Files.newOutputStream(file.toPath()), StandardCharsets.UTF_8);write.write(content);write.flush();write.close();} catch (Exception e) {e.printStackTrace();flag = false;}return flag;}
}

自定义类

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.List;@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode
@Data
public class SevpChnWefcRffc {@JsonProperty(value = "DS")private List<SevpChnWefcRffcItem> ds;
}
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.Date;@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode
@Data
public class SevpChnWefcRffcItem {/*** ID*/private Integer id;/*** 省名*/@JsonProperty(value = "Province")private String province;/*** 地市名*/@JsonProperty(value = "City")private String city;/*** 行政编码*/@JsonProperty(value = "Admin_Code_CHN")private String adminCodeChn;/*** 区县名*/@JsonProperty(value = "Cnty")private String cnty;/*** 区站号*/@JsonProperty(value = "Station_Id_C")private String stationIdC;/*** 站名*/@JsonProperty(value = "Station_Name")private String stationName;/*** 测站级别*/@JsonProperty(value = "Station_levl")private String stationLevel;/*** 纬度*/@JsonProperty(value = "Lat")private String lat;/*** 经度*/@JsonProperty(value = "Lon")private String lon;/*** 资料时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonProperty(value = "Datetime")private Date dateTime;/*** 产品描述*/@JsonProperty(value = "PROD_DESC")private String prodDesc;/*** 产品代码*/@JsonProperty(value = "PROD_CODE")private String prodCode;/*** 预报时效*/@JsonProperty(value = "Validtime")private Integer validTime;/*** 温度*/@JsonProperty(value = "TEM")private Double tem;/*** 气压*/@JsonProperty(value = "PRS")private Double prs;/*** 风向*/@JsonProperty(value = "WIN_D")private Double winD;/*** 风速*/@JsonProperty(value = "WIN_S")private Double winS;/*** 相对湿度*/@JsonProperty(value = "RHU")private Double rhu;/*** 可降水分*/@JsonProperty(value = "PRE_PRE_Fore")private Double prePreFore;/*** 天气现象*/@JsonProperty(value = "WEP")private Integer wep;/*** 能见度*/@JsonProperty(value = "VIS")private Double vis;
}

大集合转化成若干个小集合

import java.util.ArrayList;
import java.util.List;public class ListUtils {/*** 将集合拆分成若干个batch,并将batch存于新的集合* @param list 目标集合* @param size batch大小* List m: [a, b, c, d, e, f, g]* -> splitList(m, 3)* -> [[a, b, c], [d, e, f], [g]]* @return List<Batch>*/public static <T> List<List<T>> splitList(List<T> list, int size) {if (list == null) return null;List<List<T>> l1 = new ArrayList<>();if (list.size() <= size) l1.add(list);else {int s = list.size();int x = s / size;int y = s % size;if (y != 0) x = x + 1;int index = 0;for (int i = 0; i < x; i++) {List<T> l2 = new ArrayList<>();for (int j = 0; j < list.size(); j++) {l2.add(list.get(index));index++;if (l2.size() == size) {l1.add(l2);break;} else if (x == l1.size()+1 && y == l2.size()) {l1.add(l2);break;}}}}return l1;}
}

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

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

相关文章

【工具】VirtualBox虚拟机安装Windows操作系统

前面的文章中介绍了VirtualBox虚拟机的安装,VirtualBox虚拟机中如何安装操作系统,是本文的重点,下面将进行详细介绍。 使用VirtualBox虚拟机安装Windows操作系统有很多好处,主要包括以下几点: 节省资源:通过虚拟化技术,一台物理计算机可以同时运行多个虚拟机,每个虚拟…

【Terraform学习】使用 Terraform 将 EC2 实例作为 Web 服务器启动(Terraform-AWS最佳实战学习)

使用 Terraform 将 EC2 实例作为 Web 服务器启动 实验步骤 前提条件 安装 Terraform&#xff1a; 地址 下载仓库代码模版 本实验代码位于 task_ec2 文件夹中。 变量文件 variables.tf 在上面的代码中&#xff0c;您将声明&#xff0c;aws_access_key&#xff0c;aws_secr…

使用ImageMagick实现多张图片拼接为gif(多线程版)

官网: https://imagemagick.org/ 直接上代码 ExecutorService es Executors.newFixedThreadPool(10); List<File> images getImageFiles(sceneDir); CountDownLatch cdl new CountDownLatch(images.size()); // 拷贝图片 for (File file : images) {System.out.prin…

Web3 游戏七月洞察:迈向主流采用的临界点?

作者: lesleyfootprint.network 2023 年 7 月&#xff0c;Web3 游戏领域出现了小幅增长&#xff0c;但对于许多项目来说&#xff0c;用户采用仍然是一个持续的挑战。根据 Footprint Analytics 的数据&#xff0c;活跃的区块链游戏数量略有增加&#xff0c;达到 2,471 个。然而…

容器化微服务:用Kubernetes实现弹性部署

随着云计算的迅猛发展&#xff0c;容器化和微服务架构成为了构建现代应用的重要方式。而在这个过程中&#xff0c;Kubernetes&#xff08;常简称为K8s&#xff09;作为一个开源的容器编排平台&#xff0c;正在引领着容器化微服务的部署和管理革命。本文将深入探讨容器化微服务的…

C++ 好用的格式化库--fmt

背景 fmt 库是一个开源的 C 格式化库&#xff0c;它提供了一种简洁、安全和高效的方式来进行字符串格式化。该库的设计目标是提供与 Python 的字符串格式化语法类似的功能&#xff0c;同时保持 C 的类型安全性和性能。 下载与安装 官网下载 fmt 官网地址&#xff1a;https:…

elementUI自定义上传文件 前端后端超详细过程

下面是使用Element UI自定义上传文件的前后端详细过程&#xff1a; 前端过程&#xff1a; 引入Element UI组件库&#xff1a;在前端项目中引入Element UI库&#xff0c;可以通过CDN引入或者通过npm安装并导入。 创建上传组件&#xff1a;在前端代码中创建一个上传组件&#x…

opencv 进阶17-使用K最近邻和比率检验过滤匹配(图像匹配)

K最近邻&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;和比率检验&#xff08;Ratio Test&#xff09;是在计算机视觉中用于特征匹配的常见技术。它们通常与特征描述子&#xff08;例如SIFT、SURF、ORB等&#xff09;一起使用&#xff0c;以在图像中找到相似…

Git相关命令

SSH密钥文件 Github里面S设置SH公钥有两者选择方式 账号下的每个仓库都设置一个公钥&#xff0c;因为GitHub官方要求每个仓库的公钥都不能相同&#xff0c;所以每个账号都要搞一个密钥&#xff08;很麻烦&#xff09;给账号分配一个公钥&#xff0c;然后这个公钥就可以在这个…

如何将pdf文件转换成word文档?

如何将pdf文件转换成word文档&#xff1f;PDF文档是我们日常办公中最为常用的电子文档格式的文件&#xff0c;也是在会议、教育培训以及商业营销中经常使用的文档格式。所以说PDF文档的功能较强&#xff0c;且应用场景较多。但是也有例外的时候&#xff0c;比如我们需要将PDF文…

Vue的五种方法实现加减乘除运算

五种方法的详细说明&#xff1a; 计算属性&#xff08;Computed Properties&#xff09;&#xff1a; 计算属性是Vue.js提供的一种便捷的属性&#xff0c;它根据依赖的数据动态计算出一个新的值。计算属性的值会被缓存&#xff0c;只有当依赖的数据发生变化时&#xff0c;才会…

前端面试总结心得

1.放在HTML里的哪一部分JavaScripts会在页面加载的时候被执行&#xff1f; A、文件头部位置&#xff1b;B、文件尾&#xff1b;C、<head>标签部分&#xff1b;D、<body>标签部分 &#xff08;正确答案D&#xff09; 2.队列和栈的区别是什么&#xff1f; 答案&am…

python判断ip所属地区 python 判断ip 网段

前言 IP地址是互联网中唯一标识一个设备的地址&#xff0c;有时候需要判断一个IP地址所属的地区&#xff0c;这就需要用到IP地址归属查询。本文将介绍Python如何通过IP地址查询所属地区并展示代码。 一、 IP地址归属查询 IP地址归属查询又称IP地址归属地查询、IP地址归属地定…

框架分析(2)-React

框架分析&#xff08;2&#xff09;-React 专栏介绍React核心思想关键特性和功能组件化开发单向数据流JSX语法强大的生态系统 优缺点分析优点缺点 专栏介绍 link 主要对目前市面上常见的框架进行分析和总结&#xff0c;希望有兴趣的小伙伴们可以看一下&#xff0c;会持续更新的…

火山引擎发布自研视频编解码芯片 压缩效率提升30%

8月22日&#xff0c;火山引擎视频云宣布其自研的视频编解码芯片已成功出片。经验证&#xff0c;该芯片的视频压缩效率相比行业主流硬件编码器可提升30%以上&#xff0c;未来将服务于抖音、西瓜视频等视频业务&#xff0c;并将通过火山引擎视频云开放给企业客户。 火山引擎总裁…

【真实案例】解决后端接口调用偶尔超时问题

文章目录 背景分析代码分析二次日志分析排查Gateway服务解决解决办法1:添加重试机制解决办法2:优化网关内存分配解决办法3:调整OOM策略背景 项目从虚拟机迁移到k8s云原生平台(RainBond)后,发现偶尔会出现接口调用超时的问题。 统计了一下从上线到现在近一个月的调用失败…

基于Springboot+Thymeleaf学生在线考试管理系统——LW模板

摘 要 随着当前大数据时代的飞速发展&#xff0c;信息技术以及数据科学不断的普及&#xff0c;教育界也随之更新换代。无粉尘黑板以及电子化考试都已经是在各种学校中普及使用&#xff0c;而且因为操作简单以及对环境没有任何影响&#xff0c;这也将是未来发展的重大趋势。而由…

springMVC Unix 文件参数变更漏洞修复

错误信息如下&#xff1a; 解决方案&#xff1a; 原因&#xff1a;未对用户输入正确执行危险字符清理 未检查用户输入中是否包含“…”&#xff08;两个点&#xff09;字符串&#xff0c;比如 url 为 /login?action…/webapps/RTJEKSWTN26635&typerandomCode cookie为Coo…

Spring Boot 整合MyBatis(超详细)

&#x1f600;前言 本篇博文关于Spring Boot 整合MyBatis&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x…

R语言03-R语言中的矩阵

概念 在R语言中&#xff0c;矩阵&#xff08;Matrix&#xff09;是一个二维的数据结构&#xff0c;由行和列组成&#xff0c;其中所有元素必须具有相同的数据类型。矩阵可以用于存储数值型数据&#xff0c;常用于线性代数运算、统计计算以及数据处理等领域。 代码示例 # 创建…