欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Java中解析JSON數(shù)據(jù)代碼示例及說明

 更新時間:2025年03月26日 09:49:02   作者:松香如墨  
這篇文章主要介紹了在Java中解析JSON數(shù)據(jù)的相關(guān)資料,文中講解了如何使用Gson和Jackson庫解析JSON數(shù)據(jù),并展示了如何將日期時間字符串轉(zhuǎn)換為時間戳,通過代碼介紹的非常詳細,需要的朋友可以參考下

例子解析以下JSON數(shù)據(jù)

 {"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 數(shù)據(jù):

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

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

 接下來,定義對應(yīng)的 Java 類來映射 JSON 數(shù)據(jù)結(jié)構(gòu):

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 數(shù)據(jù):

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 數(shù)據(jù)結(jié)構(gòu)對應(yīng)的 Java 類,然后使用 Gson 庫將 JSON 字符串解析為 Java 對象,并打印出解析后的數(shù)據(jù)。如果使用 Jackson 庫,解析過程會有所不同,但原理類似。

將解析出的 req_times 列表中的第一個時間字符串轉(zhuǎn)換為時間戳。在 Java 中,可以使用 SimpleDateFormat 類來解析日期時間字符串,并將其轉(zhuǎn)換為 Date 對象,然后通過 Date 對象的 getTime() 方法獲取對應(yīng)的時間戳。

代碼說明:

  • 日期格式化:使用 SimpleDateFormat 類,其構(gòu)造函數(shù)傳入 "yyyy-MM-dd HH:mm:ss" 作為日期時間的格式模板,該模板與 JSON 數(shù)據(jù)中的日期時間字符串格式相匹配。
  • 解析日期字符串:調(diào)用 SimpleDateFormat 對象的 parse() 方法將日期時間字符串解析為 Date 對象。
  • 獲取時間戳:通過 Date 對象的 getTime() 方法獲取對應(yīng)的時間戳(從 1970 年 1 月 1 日 00:00:00 UTC 到該日期的毫秒數(shù))。
  • 異常處理:使用 try-catch 塊捕獲 ParseException 異常,當日期時間字符串格式不符合模板時,會拋出該異常,捕獲后打印錯誤信息并輸出堆棧跟蹤。

運行上述代碼,在輸出 Req Times 信息后,會額外輸出第一個請求時間對應(yīng)的時間戳。

總結(jié)

到此這篇關(guān)于在Java中解析JSON數(shù)據(jù)代碼的文章就介紹到這了,更多相關(guān)Java解析JSON數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • Java中線程用法總結(jié)

    Java中線程用法總結(jié)

    這篇文章主要介紹了Java中線程用法,實例總結(jié)了java中線程的常見使用技巧,需要的朋友可以參考下
    2015-06-06
  • 解決spring boot網(wǎng)關(guān)gateway導致的坑,無法下載文件問題

    解決spring boot網(wǎng)關(guān)gateway導致的坑,無法下載文件問題

    這篇文章主要介紹了解決spring boot網(wǎng)關(guān)gateway導致的坑,無法下載文件的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springboot后端存儲富文本內(nèi)容的思路與步驟(含圖片內(nèi)容)

    springboot后端存儲富文本內(nèi)容的思路與步驟(含圖片內(nèi)容)

    在所有的編輯器中,大概最受歡迎的就是富文本編輯器和MarkDown編輯器了,下面這篇文章主要給大家介紹了關(guān)于springboot后端存儲富文本內(nèi)容的思路與步驟的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • SpringMvc @RequestParam 使用推薦使用包裝類型代替包裝類型

    SpringMvc @RequestParam 使用推薦使用包裝類型代替包裝類型

    這篇文章主要介紹了SpringMvc @RequestParam 使用推薦使用包裝類型代替包裝類型,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Java結(jié)構(gòu)型設(shè)計模式之橋接模式詳細講解

    Java結(jié)構(gòu)型設(shè)計模式之橋接模式詳細講解

    橋接,顧名思義,就是用來連接兩個部分,使得兩個部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實現(xiàn)部分分離解耦,使他們可以獨立的變化。本文通過示例詳細介紹了橋接模式的原理與使用,需要的可以參考一下
    2022-09-09
  • Java實現(xiàn)簡單推箱子游戲

    Java實現(xiàn)簡單推箱子游戲

    這篇文章主要為大家詳細介紹了Java實現(xiàn)推箱子游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • springBoot集成Elasticsearch 報錯 Health check failed的解決

    springBoot集成Elasticsearch 報錯 Health check failed的解決

    這篇文章主要介紹了springBoot集成Elasticsearch 報錯 Health check failed的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中的程序計數(shù)器是什么

    Java中的程序計數(shù)器是什么

    這篇文章主要介紹了Java中的程序計數(shù)器是什么,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • 最新評論