diff --git a/sa-token-demo/sa-token-demo-test/pom.xml b/sa-token-demo/sa-token-demo-test/pom.xml
index 14ece5b9..f310d333 100644
--- a/sa-token-demo/sa-token-demo-test/pom.xml
+++ b/sa-token-demo/sa-token-demo-test/pom.xml
@@ -62,7 +62,7 @@
cn.dev33
- sa-token-fastjson
+ sa-token-fastjson2
${sa-token.version}
diff --git a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson2.java b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson2.java
index 97585766..64efa883 100644
--- a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson2.java
+++ b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson2.java
@@ -16,13 +16,10 @@
package cn.dev33.satoken.json;
-import cn.dev33.satoken.session.SaSessionForFastjson2Customized;
import com.alibaba.fastjson2.JSON;
-import java.util.Map;
-
/**
- * JSON 转换器, Fastjson 版实现
+ * JSON 转换器, Fastjson2 版实现
*
* @author click33
* @since 1.34.0
@@ -41,17 +38,8 @@ public class SaJsonTemplateForFastjson2 implements SaJsonTemplate {
* 反序列化:json 字符串 → 对象
*/
@Override
- public Object jsonToObject(String jsonStr) {
- // TODO: 此处待更改,需要让其自动识别类型
- return JSON.parseObject(jsonStr, SaSessionForFastjson2Customized.class);
- }
-
- /**
- * 反序列化:json 字符串 → Map
- */
- @Override
- public Map jsonToMap(String jsonStr) {
- return JSON.parseObject(jsonStr, Map.class);
+ public T jsonToObject(String jsonStr, Class type) {
+ return JSON.parseObject(jsonStr, type);
}
}
diff --git a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginForFastjson2.java b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginForFastjson2.java
index f28ff687..fea05d97 100644
--- a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginForFastjson2.java
+++ b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginForFastjson2.java
@@ -37,6 +37,8 @@ public class SaTokenPluginForFastjson2 implements SaTokenPlugin {
// 重写 SaSession 生成策略
SaStrategy.instance.createSession = SaSessionForFastjson2Customized::new;
+ // 指定 SaSession 类型
+ SaStrategy.instance.sessionClassType = SaSessionForFastjson2Customized.class;
}
diff --git a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/session/SaSessionForFastjson2Customized.java b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/session/SaSessionForFastjson2Customized.java
index 5a0d17fa..345b5537 100644
--- a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/session/SaSessionForFastjson2Customized.java
+++ b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/session/SaSessionForFastjson2Customized.java
@@ -17,9 +17,10 @@ package cn.dev33.satoken.session;
import cn.dev33.satoken.util.SaFoxUtil;
import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
/**
- * Fastjson2 定制版 SaSession,重写类型转换API、忽略 timeout 字段的序列化
+ * Fastjson2 定制版 SaSession,重写类型转换API
*
* @author click33
* @since 1.34.0
@@ -48,35 +49,25 @@ public class SaSessionForFastjson2Customized extends SaSession {
* @param 泛型
* @param key key
* @param cs 指定转换类型
- * @return 值
+ * @return 值
*/
@Override
public T getModel(String key, Class cs) {
- if(SaFoxUtil.isBasicType(cs)) {
- return SaFoxUtil.getValueByType(get(key), cs);
- }
- return JSON.parseObject(getString(key), cs);
- }
-
- /**
- * 取值 (指定转换类型, 并指定值为Null时返回的默认值)
- * @param 泛型
- * @param key key
- * @param cs 指定转换类型
- * @param defaultValue 值为Null时返回的默认值
- * @return 值
- */
- @Override
- @SuppressWarnings("unchecked")
- public T getModel(String key, Class cs, Object defaultValue) {
+ // 如果是想取出为基础类型
Object value = get(key);
- if(valueIsNull(value)) {
- return (T)defaultValue;
- }
if(SaFoxUtil.isBasicType(cs)) {
- return SaFoxUtil.getValueByType(get(key), cs);
+ return SaFoxUtil.getValueByType(value, cs);
+ }
+ // 为空提前返回
+ if(valueIsNull(value)) {
+ return null;
+ }
+ // 如果是 JSONObject 类型直接转,否则先转为 String 再转
+ if(value instanceof JSONObject) {
+ JSONObject jo = (JSONObject) value;
+ return jo.to(cs);
+ } else {
+ return JSON.parseObject(value.toString(), cs);
}
- return JSON.parseObject(getString(key), cs);
}
-
}