当前位置:   article > 正文

json返回工具类|世界协调时间(UTC)

json返回工具类|世界协调时间(UTC)

 

一、问题

世界协调时间(UTC)是一个标准的时间参考,通常被用于跨越不同时区的时间标准。要将 UTC 时间转换为中国时间(中国标准时间),你需要将时间加上8个小时,因为中国位于 UTC+8 时区。

初中知识的时区问题了。

给定 UTC 时间 2024-05-08T02:21:45Z,你可以通过以下方式转换为中国标准时间:

将 UTC 时间加上 8 个小时。
结果将是中国标准时间。
通过添加 8 个小时:

UTC 时间:2024-05-08T02:21:45Z
中国标准时间:2024-05-08T10:21:45(即当天早上 10 点 21 分 45 秒)。

二、json标准返回数据格式的代码

2.1新建了一个工具类

  1. package fuak.ioe.util;
  2. import com.fasterxml.jackson.annotation.JsonFormat;
  3. import com.fasterxml.jackson.annotation.JsonProperty;
  4. import com.fasterxml.jackson.core.JsonProcessingException;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. public class APIResponseUtil {
  10. @JsonProperty("status")
  11. private Status status;
  12. @JsonProperty("data")
  13. private Map<String, Object> data = new HashMap<>();
  14. @JsonProperty("metadata")
  15. private Metadata metadata;
  16. public APIResponseUtil() {
  17. // 默认构造函数
  18. }
  19. public APIResponseUtil(Status status, Metadata metadata) {
  20. this.status = status;
  21. this.metadata = metadata;
  22. }
  23. // Getter 和 Setter 方法
  24. public Status getStatus() {
  25. return status;
  26. }
  27. public void setStatus(Status status) {
  28. this.status = status;
  29. }
  30. public Map<String, Object> getData() {
  31. return data;
  32. }
  33. public Metadata getMetadata() {
  34. return metadata;
  35. }
  36. public void setMetadata(Metadata metadata) {
  37. this.metadata = metadata;
  38. }
  39. // 内部类定义
  40. public static class Status {
  41. @JsonProperty("code")
  42. private int code;
  43. @JsonProperty("message")
  44. private String message;
  45. public Status() {
  46. // 默认构造函数
  47. }
  48. public Status(int code, String message) {
  49. this.code = code;
  50. this.message = message;
  51. }
  52. // Getter 和 Setter 方法
  53. public int getCode() {
  54. return code;
  55. }
  56. public void setCode(int code) {
  57. this.code = code;
  58. }
  59. public String getMessage() {
  60. return message;
  61. }
  62. public void setMessage(String message) {
  63. this.message = message;
  64. }
  65. }
  66. public static class Metadata {
  67. @JsonProperty("requestId")
  68. private String requestId;
  69. @JsonProperty("timestamp")
  70. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")
  71. private Date timestamp;
  72. public Metadata() {
  73. // 默认构造函数
  74. }
  75. public Metadata(String requestId, Date timestamp) {
  76. this.requestId = requestId;
  77. this.timestamp = timestamp;
  78. }
  79. // Getter 和 Setter 方法
  80. public String getRequestId() {
  81. return requestId;
  82. }
  83. public void setRequestId(String requestId) {
  84. this.requestId = requestId;
  85. }
  86. public Date getTimestamp() {
  87. return timestamp;
  88. }
  89. public void setTimestamp(Date timestamp) {
  90. this.timestamp = timestamp;
  91. }
  92. }
  93. @Override
  94. public String toString() {
  95. ObjectMapper objectMapper = new ObjectMapper();
  96. try {
  97. return objectMapper.writeValueAsString(this);
  98. } catch (JsonProcessingException e) {
  99. e.printStackTrace();
  100. return "{}"; // 如果转换失败,返回空对象
  101. }
  102. }
  103. }

2.2jackson maven 坐标

在 Maven 项目中使用 Jackson 库,您需要在项目的 pom.xml 文件中添加相应的依赖

<dependency>

  <groupId>com.fasterxml.jackson.core</groupId>

       <artifactId>jackson-databind</artifactId>

     <version>2.12.6</version>

</dependency>

 2.3直接导包

2.4测试类

根据公司给定的前后端json返回格式要求

  • tatus:包含状态码和描述消息,提供了关于操作执行结果的简要信息。

    • code:状态码,通常为0表示成功,其他值表示不同类型的错误。
    • message:可读的描述信息,例如"success"或错误描述。
  • data:包含请求返回的实际数据。在这个示例中,它包括userId、userName和age字段。

  • metadata:包含与请求或响应相关的其他元数据。

    • requestId:一个唯一标识请求的ID,便于跟踪和调试。
    • timestamp:响应的时间戳,以ISO 8601格式表示。

 

  1. package fuak.ioe.test;
  2. import java.util.Date;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import org.junit.Test;
  6. import zck.ioe.util.APIResponseUtil;
  7. public class APIResponseTest {
  8. @Test
  9. public void testAPIResponse() {
  10. // 创建 Status 对象
  11. APIResponseUtil.Status status = new APIResponseUtil.Status(0, "success");
  12. // 创建 data 对象
  13. Map<String, Object> data = new HashMap<>();
  14. data.put("userId", 123);
  15. data.put("userName", "John");
  16. data.put("age", 25);
  17. data.put("email", "john@example.com");
  18. // 创建 Metadata 对象
  19. Date timestamp = new Date();
  20. APIResponseUtil.Metadata metadata = new APIResponseUtil.Metadata("abc123", timestamp);
  21. // 创建 APIResponse 对象
  22. APIResponseUtil response = new APIResponseUtil(status, metadata);
  23. // 设置 data
  24. response.getData().putAll(data);
  25. // 打印 JSON 格式的响应
  26. String jsonResponse = response.toString();
  27. System.out.println(jsonResponse);
  28. }
  29. }
  1. 呈现
  2. {
  3. "status": {
  4. "code": 0,
  5. "message": "success"
  6. },
  7. "data": {
  8. "userName": "John",
  9. "userId": 123,
  10. "age": 25,
  11. "email": "john@example.com"
  12. },
  13. "metadata": {
  14. "requestId": "abc123",
  15. "timestamp": "2024-05-08T02:24:51Z"
  16. }
  17. }

三、总结

我们首先创建了一个 APIResponse.Status 对象,并传入状态码和消息。
然后创建了一个 data 的 HashMap 对象,并添加一些示例数据。
接着,我们创建了一个 APIResponse.Metadata 对象,其中包含请求的 requestId 和当前时间戳。
最后,我们通过新的构造函数创建了 APIResponse 对象,将 status 和 metadata 传入。
使用 response.getData().putAll(data); 将预设的数据添加到 APIResponse 对象的 data 中。
最后,将 APIResponse 对象转换为 JSON 格式的字符串,并打印出来。

最最后可以将json 回调给前端,测试人员可以通过metadata 中的时间戳和请求id 进行调试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/572072
推荐阅读
相关标签
  

闽ICP备14008679号