From 2b8f30b72df73119edda3514f2bb7d0491a29043 Mon Sep 17 00:00:00 2001 From: octopus_yan Date: Fri, 23 Jan 2026 22:40:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 38 +++++++++--- .../dmt/common/manager/ConfigManager.java | 19 +++--- .../dmt/common/manager/http/HttpUtil.java | 6 +- .../octopusyan/dmt/common/util/JsonUtil.java | 61 ++++++++++--------- .../cn/octopusyan/dmt/task/UpgradeTask.java | 4 +- .../processor/BaiduTranslateProcessor.java | 4 +- .../FreeBaiduTranslateProcessor.java | 6 +- .../FreeGoogleTranslateProcessor.java | 4 +- src/main/java/module-info.java | 7 ++- 9 files changed, 86 insertions(+), 63 deletions(-) diff --git a/pom.xml b/pom.xml index b878ecb..f9c2d07 100644 --- a/pom.xml +++ b/pom.xml @@ -30,15 +30,16 @@ 5.11.0 21.0.4 - 2.0.16 - 1.5.7 + 2.0.17 + 1.5.25 2.0.52 - 3.16.0 - 2.17.0 - 1.4.0 - 1.18.32 - 2.15.4 - 12.3.1 + 3.20.0 + 2.21.0 + 1.6.0 + 1.18.42 + 3.0.3 + 12.4.0 + 0.13.0 @@ -66,11 +67,13 @@ 2.0.1 + org.slf4j slf4j-api ${slf4j.version} + ch.qos.logback logback-classic @@ -124,10 +127,12 @@ + - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-yaml ${jackson.version} + compile @@ -135,7 +140,7 @@ cn.hutool hutool-core - 5.8.34 + 5.8.43 @@ -151,6 +156,19 @@ org.kordamp.ikonli ikonli-feather-pack + + + + io.jsonwebtoken + jjwt-api + ${jjwt.version} + + + io.jsonwebtoken + jjwt-impl + ${jjwt.version} + runtime + diff --git a/src/main/java/cn/octopusyan/dmt/common/manager/ConfigManager.java b/src/main/java/cn/octopusyan/dmt/common/manager/ConfigManager.java index c209fcc..01bdf88 100644 --- a/src/main/java/cn/octopusyan/dmt/common/manager/ConfigManager.java +++ b/src/main/java/cn/octopusyan/dmt/common/manager/ConfigManager.java @@ -12,14 +12,15 @@ import cn.octopusyan.dmt.model.Translate; import cn.octopusyan.dmt.model.UpgradeConfig; import cn.octopusyan.dmt.translate.TranslateApi; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import javafx.application.Platform; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.dataformat.yaml.YAMLMapper; import java.io.File; import java.io.IOException; @@ -38,7 +39,12 @@ import java.util.stream.Collectors; */ public class ConfigManager { private static final Logger logger = LoggerFactory.getLogger(ConfigManager.class); - public static ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()); + + private static final ObjectMapper objectMapper = YAMLMapper.builder() + //对象的所有字段全部列入序列化 + .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL)) + .changeDefaultPropertyInclusion(incl -> incl.withContentInclusion(JsonInclude.Include.NON_NULL)) + .build(); public static final UpgradeConfig upgradeConfig = new UpgradeConfig(); public static final String DEFAULT_THEME = new PrimerLight().getName(); @@ -53,11 +59,6 @@ public class ConfigManager { private static ConfigModel configModel; - static { - objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); - } - public static void load() { configModel = loadConfig(Constants.CONFIG_FILE_PATH, ConfigModel.class); if (configModel == null) @@ -89,7 +90,7 @@ public class ConfigManager { public static void save() { try { objectMapper.writeValue(new File(Constants.CONFIG_FILE_PATH), configModel); - } catch (IOException e) { + } catch (JacksonException e) { logger.error("save config error", e); } } diff --git a/src/main/java/cn/octopusyan/dmt/common/manager/http/HttpUtil.java b/src/main/java/cn/octopusyan/dmt/common/manager/http/HttpUtil.java index effcb1b..9c1c82a 100644 --- a/src/main/java/cn/octopusyan/dmt/common/manager/http/HttpUtil.java +++ b/src/main/java/cn/octopusyan/dmt/common/manager/http/HttpUtil.java @@ -4,7 +4,7 @@ import cn.octopusyan.dmt.common.enums.ProxySetup; import cn.octopusyan.dmt.common.manager.http.response.DownloadBodyHandler; import cn.octopusyan.dmt.common.util.JsonUtil; import cn.octopusyan.dmt.model.ProxyInfo; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; import java.io.File; @@ -172,8 +172,8 @@ public class HttpUtil { for (Map.Entry property : params.properties()) { String key = property.getKey(); JsonNode value = params.get(key); - if (value.isTextual()) { - String value_ = URLEncoder.encode(String.valueOf(value.asText()), StandardCharsets.UTF_8); + if (value.isString()) { + String value_ = URLEncoder.encode(String.valueOf(value.asString()), StandardCharsets.UTF_8); formParams.append("&").append(key).append("=").append(value_); } else if (value.isNumber()) { formParams.append("&").append(key).append("=").append(value); diff --git a/src/main/java/cn/octopusyan/dmt/common/util/JsonUtil.java b/src/main/java/cn/octopusyan/dmt/common/util/JsonUtil.java index 7964284..8ad3cca 100644 --- a/src/main/java/cn/octopusyan/dmt/common/util/JsonUtil.java +++ b/src/main/java/cn/octopusyan/dmt/common/util/JsonUtil.java @@ -1,18 +1,20 @@ package cn.octopusyan.dmt.common.util; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.cfg.DateTimeFeature; +import tools.jackson.databind.json.JsonMapper; import java.io.File; -import java.io.IOException; import java.text.SimpleDateFormat; +import java.util.TimeZone; /** * Jackson 封装工具类 @@ -21,25 +23,26 @@ import java.text.SimpleDateFormat; */ public class JsonUtil { private static final Logger log = LoggerFactory.getLogger(JsonUtil.class); - private static final ObjectMapper objectMapper = new ObjectMapper(); /** * 时间日期格式 */ private static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss"; - - static { - //对象的所有字段全部列入序列化 - objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); - //取消默认转换timestamps形式 - objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - //忽略空Bean转json的错误 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - //所有的日期格式都统一为以下的格式,即yyyy-MM-dd HH:mm:ss - objectMapper.setDateFormat(new SimpleDateFormat(STANDARD_FORMAT)); - //忽略 在json字符串中存在,但在java对象中不存在对应属性的情况。防止错误 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } + + private static final ObjectMapper objectMapper = JsonMapper.builder() + //对象的所有字段全部列入序列化 + .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL)) + .changeDefaultPropertyInclusion(incl -> incl.withContentInclusion(JsonInclude.Include.NON_NULL)) + //取消默认转换timestamps形式 + .disable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS) + //忽略空Bean转json的错误 + .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) + //忽略 在json字符串中存在,但在java对象中不存在对应属性的情况。防止错误 + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + //所有的日期格式都统一为以下的格式,即yyyy-MM-dd HH:mm:ss + .defaultDateFormat(new SimpleDateFormat(STANDARD_FORMAT)) + .defaultTimeZone(TimeZone.getDefault()) + .build(); /** * Json字符串 转 JavaBean @@ -53,7 +56,7 @@ public class JsonUtil { T t = null; try { t = objectMapper.readValue(jsonString, clazz); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } return t; @@ -71,7 +74,7 @@ public class JsonUtil { T t = null; try { t = objectMapper.readValue(file, clazz); - } catch (IOException e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } return t; @@ -89,7 +92,7 @@ public class JsonUtil { T t = null; try { t = objectMapper.readValue(jsonArray, reference); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } return t; @@ -106,7 +109,7 @@ public class JsonUtil { String jsonString = null; try { jsonString = objectMapper.writeValueAsString(object); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } return jsonString; @@ -122,7 +125,7 @@ public class JsonUtil { byte[] bytes = null; try { bytes = objectMapper.writeValueAsBytes(object); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } return bytes; @@ -137,7 +140,7 @@ public class JsonUtil { public static void objectToFile(File file, Object object) { try { objectMapper.writeValue(file, object); - } catch (Exception e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } } @@ -153,7 +156,7 @@ public class JsonUtil { JsonNode jsonNode = null; try { jsonNode = objectMapper.readTree(jsonString); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } return jsonNode; @@ -179,7 +182,7 @@ public class JsonUtil { String jsonString = null; try { jsonString = objectMapper.writeValueAsString(jsonNode); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { log.error("失败:{}", e.getMessage()); } return jsonString; diff --git a/src/main/java/cn/octopusyan/dmt/task/UpgradeTask.java b/src/main/java/cn/octopusyan/dmt/task/UpgradeTask.java index 85affc2..81f42a9 100644 --- a/src/main/java/cn/octopusyan/dmt/task/UpgradeTask.java +++ b/src/main/java/cn/octopusyan/dmt/task/UpgradeTask.java @@ -6,7 +6,7 @@ import cn.octopusyan.dmt.common.util.JsonUtil; import cn.octopusyan.dmt.model.UpgradeConfig; import cn.octopusyan.dmt.task.base.BaseTask; import cn.octopusyan.dmt.task.listener.DefaultTaskListener; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import org.apache.commons.lang3.StringUtils; /** @@ -28,7 +28,7 @@ public class UpgradeTask extends BaseTask { JsonNode response = JsonUtil.parseJsonObject(responseStr); // TODO 校验返回内容 - String newVersion = response.get("tag_name").asText(); + String newVersion = response.get("tag_name").asString(); if (listener != null) listener.onChecked(!StringUtils.equals(upgradeConfig.getVersion(), newVersion), newVersion); diff --git a/src/main/java/cn/octopusyan/dmt/translate/processor/BaiduTranslateProcessor.java b/src/main/java/cn/octopusyan/dmt/translate/processor/BaiduTranslateProcessor.java index a3e1b18..33698da 100644 --- a/src/main/java/cn/octopusyan/dmt/translate/processor/BaiduTranslateProcessor.java +++ b/src/main/java/cn/octopusyan/dmt/translate/processor/BaiduTranslateProcessor.java @@ -3,7 +3,7 @@ package cn.octopusyan.dmt.translate.processor; import cn.octopusyan.dmt.common.util.JsonUtil; import cn.octopusyan.dmt.translate.ApiKey; import cn.octopusyan.dmt.translate.TranslateApi; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -59,7 +59,7 @@ public class BaiduTranslateProcessor extends AbstractTranslateProcessor { throw new RuntimeException(String.valueOf(errorMsg)); } - return json.get("trans_result").get(0).get("dst").asText(); + return json.get("trans_result").get(0).get("dst").asString(); } private String getSign(String appid, String q, String salt) { diff --git a/src/main/java/cn/octopusyan/dmt/translate/processor/FreeBaiduTranslateProcessor.java b/src/main/java/cn/octopusyan/dmt/translate/processor/FreeBaiduTranslateProcessor.java index e0de3e5..18ab83a 100644 --- a/src/main/java/cn/octopusyan/dmt/translate/processor/FreeBaiduTranslateProcessor.java +++ b/src/main/java/cn/octopusyan/dmt/translate/processor/FreeBaiduTranslateProcessor.java @@ -3,7 +3,7 @@ package cn.octopusyan.dmt.translate.processor; import cn.octopusyan.dmt.common.manager.http.CookieManager; import cn.octopusyan.dmt.common.util.JsonUtil; import cn.octopusyan.dmt.translate.TranslateApi; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import java.io.IOException; import java.net.HttpCookie; @@ -56,7 +56,7 @@ public class FreeBaiduTranslateProcessor extends AbstractTranslateProcessor { JsonNode json = JsonUtil.parseJsonObject(resp); if (!json.has("data")) { - String errorMsg = json.get("errmsg").asText(); + String errorMsg = json.get("errmsg").asString(); if("访问出现异常,请刷新后重试!".equals(errorMsg) && !header.containsKey("Cookie")) { checkCookie(); return customTranslate(source); @@ -64,7 +64,7 @@ public class FreeBaiduTranslateProcessor extends AbstractTranslateProcessor { throw new RuntimeException(errorMsg); } - return json.get("data").get(0).get("dst").asText(); + return json.get("data").get(0).get("dst").asString(); } private void checkCookie() throws IOException, InterruptedException { diff --git a/src/main/java/cn/octopusyan/dmt/translate/processor/FreeGoogleTranslateProcessor.java b/src/main/java/cn/octopusyan/dmt/translate/processor/FreeGoogleTranslateProcessor.java index 507ae9d..1eac04b 100644 --- a/src/main/java/cn/octopusyan/dmt/translate/processor/FreeGoogleTranslateProcessor.java +++ b/src/main/java/cn/octopusyan/dmt/translate/processor/FreeGoogleTranslateProcessor.java @@ -3,7 +3,7 @@ package cn.octopusyan.dmt.translate.processor; import cn.octopusyan.dmt.common.util.JsonUtil; import cn.octopusyan.dmt.translate.TranslateApi; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import java.io.IOException; import java.util.HashMap; @@ -49,7 +49,7 @@ public class FreeGoogleTranslateProcessor extends AbstractTranslateProcessor { JsonNode json = JsonUtil.parseJsonObject(resp); for (JsonNode o : json.get(0)) { - retStr.append(o.get(0).asText()); + retStr.append(o.get(0).asString()); } return retStr.toString(); diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 5249939..3119030 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -12,16 +12,17 @@ module cn.octopusyan.dmt { requires static lombok; requires atlantafx.base; requires com.fasterxml.jackson.annotation; - requires com.fasterxml.jackson.databind; - requires com.fasterxml.jackson.dataformat.yaml; + requires tools.jackson.databind; + requires tools.jackson.dataformat.yaml; requires java.prefs; requires org.kordamp.ikonli.javafx; requires org.kordamp.ikonli.feather; requires java.management; requires cn.hutool.core; + requires jjwt.api; exports cn.octopusyan.dmt; - exports cn.octopusyan.dmt.model to com.fasterxml.jackson.databind; + exports cn.octopusyan.dmt.model to tools.jackson.databind; opens cn.octopusyan.dmt.model to javafx.base; opens cn.octopusyan.dmt.common.base to javafx.fxml; opens cn.octopusyan.dmt.controller to javafx.fxml;