tsx81429 发表于 2025-10-27 23:03:35

在 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() 方法获取对应的时间戳。
代码分析:



[*]日期格式化:利用 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 信息后,会额外输出第一个哀求时间对应的时间戳。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 在 Java 中剖析 JSON 数据