在 Java 中解析 JSON 数据

例子解析以下JSON数据

 {"code":0,"msg":"成功","data":            [{
"host":"1068222.com",
"port":"",
"m_token":"490e20e70e7de5f21a24b14c12a393f6",
"category":"sd",
"sub_category":"M1049",
"flyback_date":"2025-02-17",
"versions":["0.4.2"],
"req_times":["2025-02-15 02:58:20"],
"create_time":"2025-02-18 06:58:20",
"update_time":"2025-02-18 06:58:20"}]
}

以下以 Gson 库为例,展示如何解析这段 JSON 数据:

首先,需要在项目中引入 Gson 库的依赖。如果使用 Maven 项目,可以在pom.xml文件中添加以下依赖:

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.9</version>
</dependency>

 接下来,定义对应的 Java 类来映射 JSON 数据结构:

import java.util.List;public class ResponseData {private int code;private String msg;private List<DataItem> data;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public List<DataItem> getData() {return data;}public void setData(List<DataItem> data) {this.data = data;}public static class DataItem {private String host;private String port;private String m_token;private String category;private String sub_category;private String flyback_date;private List<String> versions;private List<String> req_times;private String create_time;private String update_time;public String getHost() {return host;}public void setHost(String host) {this.host = host;}public String getPort() {return port;}public void setPort(String port) {this.port = port;}public String getM_token() {return m_token;}public void setM_token(String m_token) {this.m_token = m_token;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}public String getSub_category() {return sub_category;}public void setSub_category(String sub_category) {this.sub_category = sub_category;}public String getFlyback_date() {return flyback_date;}public void setFlyback_date(String flyback_date) {this.flyback_date = flyback_date;}public List<String> getVersions() {return versions;}public void setVersions(List<String> versions) {this.versions = versions;}public List<String> getReq_times() {return req_times;}public void setReq_times(List<String> req_times) {this.req_times = req_times;}public String getCreate_time() {return create_time;}public void setCreate_time(String create_time) {this.create_time = create_time;}public String getUpdate_time() {return update_time;}public void setUpdate_time(String update_time) {this.update_time = update_time;}}
}

然后,使用 Gson 库解析 JSON 数据:

import com.google.gson.Gson;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;class ResponseData {private int code;private String msg;private List<DataItem> data;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public List<DataItem> getData() {return data;}public void setData(List<DataItem> data) {this.data = data;}static class DataItem {private String host;private String port;private String m_token;private String category;private String sub_category;private String flyback_date;private List<String> versions;private List<String> req_times;private String create_time;private String update_time;public String getHost() {return host;}public void setHost(String host) {this.host = host;}public String getPort() {return port;}public void setPort(String port) {this.port = port;}public String getM_token() {return m_token;}public void setM_token(String m_token) {this.m_token = m_token;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}public String getSub_category() {return sub_category;}public void setSub_category(String sub_category) {this.sub_category = sub_category;}public String getFlyback_date() {return flyback_date;}public void setFlyback_date(String flyback_date) {this.flyback_date = flyback_date;}public List<String> getVersions() {return versions;}public void setVersions(List<String> versions) {this.versions = versions;}public List<String> getReq_times() {return req_times;}public void setReq_times(List<String> req_times) {this.req_times = req_times;}public String getCreate_time() {return create_time;}public void setCreate_time(String create_time) {this.create_time = create_time;}public String getUpdate_time() {return update_time;}public void setUpdate_time(String update_time) {this.update_time = update_time;}}
}public class JsonParsingExample {public static void main(String[] args) {String json = "{\"code\":0,\"msg\":\"成功\",\"data\":[{\"host\":\"1068222.com\",\"port\":\"\",\"m_token\":\"490e20e70e7de5f21a24b14c12a393f6\",\"category\":\"sd\",\"sub_category\":\"M1049\",\"flyback_date\":\"2025-02-17\",\"versions\":[\"0.4.2\"],\"req_times\":[\"2025-02-15 02:58:20\"],\"create_time\":\"2025-02-18 06:58:20\",\"update_time\":\"2025-02-18 06:58:20\"}]}";Gson gson = new Gson();ResponseData response = gson.fromJson(json, ResponseData.class);System.out.println("Code: " + response.getCode());System.out.println("Message: " + response.getMsg());for (ResponseData.DataItem item : response.getData()) {System.out.println("Host: " + item.getHost());System.out.println("Port: " + item.getPort());System.out.println("m_token: " + item.getM_token());System.out.println("Category: " + item.getCategory());System.out.println("Sub Category: " + item.getSub_category());System.out.println("Flyback Date: " + item.getFlyback_date());System.out.println("Versions: " + item.getVersions());System.out.println("Req Times: " + item.getReq_times());System.out.println("Create Time: " + item.getCreate_time());System.out.println("Update Time: " + item.getUpdate_time());if (!item.getReq_times().isEmpty()) {String firstReqTime = item.getReq_times().get(0);try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse(firstReqTime);long timestamp = date.getTime();System.out.println("First Req Time Timestamp: " + timestamp);} catch (ParseException e) {System.err.println("Failed to parse date: " + firstReqTime);e.printStackTrace();}}}}
}

以上代码首先定义了与 JSON 数据结构对应的 Java 类,然后使用 Gson 库将 JSON 字符串解析为 Java 对象,并打印出解析后的数据。如果使用 Jackson 库,解析过程会有所不同,但原理类似。

将解析出的 req_times 列表中的第一个时间字符串转换为时间戳。在 Java 中,可以使用 SimpleDateFormat 类来解析日期时间字符串,并将其转换为 Date 对象,然后通过 Date 对象的 getTime() 方法获取对应的时间戳。

代码说明:

  1. 日期格式化:使用 SimpleDateFormat 类,其构造函数传入 "yyyy-MM-dd HH:mm:ss" 作为日期时间的格式模板,该模板与 JSON 数据中的日期时间字符串格式相匹配。
  2. 解析日期字符串:调用 SimpleDateFormat 对象的 parse() 方法将日期时间字符串解析为 Date 对象。
  3. 获取时间戳:通过 Date 对象的 getTime() 方法获取对应的时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 到该日期的毫秒数)。
  4. 异常处理:使用 try-catch 块捕获 ParseException 异常,当日期时间字符串格式不符合模板时,会抛出该异常,捕获后打印错误信息并输出堆栈跟踪。

运行上述代码,在输出 Req Times 信息后,会额外输出第一个请求时间对应的时间戳。

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

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

相关文章

python——集合(一)

文章目录 集合 set创建集合访问集合项in关键字添加集合元素删除集合元素复制集合使用操作符对集合进行交集、并集、差集、对称差集使用方法对集合进行交集、并集、差集、对称差集子集和超集 frozenset 冻结集合&#xff1f; 不可变集合&#xff01; 集合 set 什么是集合&#…

DeepSeek 与网络安全:AI 在网络安全领域的应用与挑战

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 在当今数字化时代&#xff0c;网络安全已成为国家、企业和个人面临的重要挑战。从传统的病毒、木马攻击&#xff0c;到高…

【Blender】二、建模篇--05,阵列修改器与晶格形变

阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…

【Python 专题】数据结构 树

LeetCode 题目104. 二叉树的最大深度(gif 图解)方法一:后序遍历(DFS)方法二:层序遍历(BFS)872. 叶子相似的树(DFS 遍历)1448. 统计二叉树中好节点的数目(DFS 遍历)437. 路径总和 III(前缀和 + DFS 回溯)1372. 二叉树中的最长交错路径(DFS)236. 二叉树的最近公共…

Linux下基本指令(4)

Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户…

ubuntu部署小笔记-采坑

ubuntu部署小笔记 搭建前端控制端后端前端nginx反向代理使用ubuntu部署nextjs项目问题一 如何访问端口号配置后台运行该进程pm2 问题二 包体过大生产环境下所需文件 问题三 部署在vercel时出现的问题需要魔法访问后端api时&#xff0c;必须使用https协议电脑端访问正常&#xf…

【联盛德 W803-Pico 试用】简介、工程测试

【联盛德 W803-Pico 试用】简介、工程测试 本文介绍了联盛德微电子 W803-Pico 开发板的基本信息、环境搭建、工程测试等内容。简介包含开发板功能、主控参数及特点、开发板原理图等信息&#xff0c;工程测试包括 Blink、串口打印等方案的演示。 活动详情&#xff1a;联盛德问答…

cursor使用记录

一、如何查看自己登录的是哪个账号 操作路径&#xff1a;Cursor -- 首选项 -- Cursor Setting &#xff08;有快捷键&#xff09; 二、状态修改为竖排&#xff08;默认是横排&#xff09; 默认如图展示&#xff0c;想要像vscode、idea等等在左侧竖着展示 操作路径&#xff1…

gitlab 解决双重认证无法登录remote: HTTP Basic: Access denied.

问题&#xff1a;gitlab开启了双因素认证 如进行了 OAuth configuration 在进行git操作时如下提示 remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead o…

C语言基础学习指南:从零入门到实战应用——适合零基础学习者与进阶巩固

目录 一、C语言概述与开发环境搭建 二、核心语法与数据类型 三、控制结构与运算符 四、函数与模块化编程 五、指针与内存管理 六、实践建议与资源推荐 结语 一、C语言概述与开发环境搭建 C语言是一种高效、灵活的通用编程语言&#xff0c;广泛应用于系统开发、嵌入式系…

C# 委托——lambda

lambda表达式不简化写起来和匿名函数很像&#xff0c;而匿名函数通常赋值给委托&#xff0c;通过委托进行调用。以下我们对lambda和委托的基本规则与使用进行整理&#xff0c;同时为了加深理解和记忆&#xff0c;我们整理了委托是如何一步步演化到lambda。 1. 委托 委托是一个…

【每日论文】TESS 2: A Large-Scale Generalist Diffusion Language Model

下载PDF或阅读论文&#xff0c;请点击&#xff1a;LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 我们推出了TESS 2&#xff0c;这是一种通用的指令跟随扩散语言模型&#xff0c;其性能优于当代的指令调整扩散模型&#xff0c;有…

conda 配置源

无论是Anaconda vs Miniconda vs Miniforge 中的哪个&#xff0c;只要使用conda就涉及源&#xff0c;换源的目的是为了加速包的获取 修改配置文件 通过修改用户目录下的 .condarc 文件来使用 不同系统下的 .condarc 目录如下&#xff1a; Linux: ${HOME}/.condarcmacOS: ${…

AI大模型发展对语音直播交友系统源码开发搭建的影响

近年来&#xff0c;AI大模型技术突飞猛进&#xff0c;为语音直播交友系统的源码开发搭建带来了深远影响。本文将从技术发展层面&#xff0c;探讨AI大模型如何赋能语音直播交友系统&#xff0c;并分析其对开发流程、功能实现和用户体验等方面带来的变革。 一、技术赋能&#xff…

C++面试题,TCP和UDP方面(1)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言TCP和UDP的区别UDP如何实现可靠TCP滑动窗口原理TCP流量控制TCP超时重传总结 前言 这是个人总结的C方向的面试题,TCP和UDP方面&#xff0…

Huatuo热更新--如何使用

在安装完huatuo热更新插件后就要开始学习如何使用了。 1.创建主框渐Main 新建文件夹Main&#xff08;可自定义&#xff09;&#xff0c;然后按下图创建文件&#xff0c;注意名称与文件夹名称保持一致 然后新建场景&#xff08;Init场景&#xff09;&#xff0c;添加3个空物体…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本&#xff1a; 2. springboot项目搭建 可以集成在自己的项目里&#xff0c;也可以到 spring.io 生成一个项目 生成的话&#xff0c;如下…

如何在 macOS 上配置 MySQL 环境变量

如何在 macOS 上配置 MySQL 环境变量 步骤 1: 查找 MySQL 安装路径 打开终端&#xff0c;使用以下命令查找 mysql 的可执行文件路径&#xff1a; which mysql如果该命令没有返回结果&#xff0c;可以使用 find 命令&#xff1a; sudo find / -name "mysql" 2>/de…

Unity Excel导表工具转Lua文件

思路介绍 借助EPPlus读取Excel文件中的配置数据&#xff0c;根据指定的不同类型的数据配置规则来解析成对应的代码文本&#xff0c;将解析出的字符串内容写入到XXX.lua.txt文件中即可 EPPlus常用API //命名空间 using OfficeOpenXml;//Excel文件路径 var fileExcel new File…

【vue项目中如何实现一段文字跑马灯效果】

在Vue项目中实现一段文字跑马灯效果&#xff0c;可以通过多种方式实现&#xff0c;以下是几种常见的方法&#xff1a; 方法一&#xff1a;使用CSS动画和Vue数据绑定 这种方法通过CSS动画实现文字的滚动效果&#xff0c;并结合Vue的数据绑定动态更新文本内容。 步骤&#xff…