在Java中解析JSON数据代码示例及说明

 更新时间:2025年03月26日 09:49:02   作者:松香如墨  
这篇文章主要介绍了在Java中解析JSON数据的相关资料,文中讲解了如何使用Gson和Jackson库解析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() 方法获取对应的时间戳。

代码说明:

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

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

总结

到此这篇关于在Java中解析JSON数据代码的文章就介绍到这了,更多相关Java解析JSON数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现为PDF批量添加图片水印实用指南

    Java实现为PDF批量添加图片水印实用指南

    在数字化办公日益普及的今天,PDF文档作为信息传输和共享的重要载体,其安全性和版权保护变得尤为关键,本文将介绍如何使用Spire.PDF for Java轻松地在Java应用程序中为PDF文档添加图片水印,有需要的可以参考下
    2025-11-11
  • JVM调优总结 -Xms -Xmx -Xmn -Xss的使用

    JVM调优总结 -Xms -Xmx -Xmn -Xss的使用

    这篇文章主要介绍了JVM调优总结 -Xms -Xmx -Xmn -Xss的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • SpringBoot Starter自定义之创建可复用的自动配置模块方式

    SpringBoot Starter自定义之创建可复用的自动配置模块方式

    本文将详细介绍如何设计和实现一个自定义的Spring Boot Starter,帮助读者掌握这一强大技术,提升代码复用性和开发效率,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 分析Java中Map的遍历性能问题

    分析Java中Map的遍历性能问题

    随着JDK 1.8 Streams API的发布,使得HashMap拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题。本文从几个方面来分析 HashMap各种遍历方式的优势与不足
    2021-06-06
  • java 实现发短信功能---腾讯云短信

    java 实现发短信功能---腾讯云短信

    如今发短信功能已经成为互联网公司的标配,接下来通过本文给大家介绍java 实现发短信功能---腾讯云短信 ,需要的朋友可以参考下
    2019-08-08
  • 用Java实现一个静态链表的方法步骤

    用Java实现一个静态链表的方法步骤

    这篇文章主要介绍了用Java实现一个静态链表的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • java 中函数的参数传递详细介绍

    java 中函数的参数传递详细介绍

    这篇文章主要介绍了 java 中函数的参数传递详细介绍的相关资料,需要的朋友可以参考下
    2016-11-11
  • SpringBoot实现解析.mdb文件的实战指南

    SpringBoot实现解析.mdb文件的实战指南

    这篇文章主要为大家详细介绍了如何在SpringBoot项目中解析旧版Microsoft Access的.mdb文件,文中提供完整的Maven依赖配置、核心工具类封装及使用示例,帮助开发者快速完成遗留系统数据迁移,希望对大家有所帮助
    2026-02-02
  • sentinel 整合spring cloud限流的过程解析

    sentinel 整合spring cloud限流的过程解析

    这篇文章主要介绍了sentinel 整合spring cloud限流,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • java基于C/S模式实现聊天程序(客户端)

    java基于C/S模式实现聊天程序(客户端)

    这篇文章主要为大家详细介绍了java基于C/S模式实现聊天程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论