refactor: 全框架 JSON 操作迁移到 simapi_serialization

- 依赖:新增 simapi_serialization path 依赖(保留 soulsoft_serialization 供 soulsoft web 栈传递使用)
- SimApiJson.json / SimApiUtil.json → JsonSerializer.Serialize
- SimApiUtil.fromJson / base64DecodeTo → JsonSerializer.Deserialize(去 ISerialization 约束)
- SimApiHttpClient signQuery/aesQuery/aesSignQuery/query → 去约束,反序列化换新库
- SimApiBaseResponse/SimApiDataResponse/SimApiLoginItem/AesBodyRequest/AuthSDK DTO → 去 @Serialization 宏/去 soulsoft 接口,改纯 POCO(simapi_serialization 反射)
- SimApiBaseResponse 标 @SerializerParent:子类响应序列化包含 _code/_message
- SimApiResultWriter / SimApiExceptionMiddleware → 响应输出走 simapi_serialization(统一 _code/_message 格式)
- SimApiRequestLogMiddleware 截断 → Deserialize<HashMap<String,Any>> + 重序列化
- SimApiAuthDto JsonValue 字段 → HashMap<String,Any>;SimApiCache.get<T> 去约束
- webdemo:AuthController readFromJson 换 Deserialize;cjpm.toml 补依赖
- 验证:webdemo 启动正常,GET/POST 接口响应格式统一,S3 存储全链路 OK
This commit is contained in:
2026-08-18 00:07:00 +08:00
parent 8b0a8f783c
commit 73f60f6f15
17 changed files with 108 additions and 380 deletions
+20 -19
View File
@@ -8,9 +8,9 @@ package simapi.middlewares
import std.collection.*
import std.io.*
import std.time.*
import stdx.encoding.json.*
import soulsoft_web_http.*
import soulsoft_extensions_logging.*
import simapi_serialization.*
import simapi.communications.*
import simapi.configurations.*
@@ -139,26 +139,27 @@ public class SimApiRequestLogMiddleware <: IMiddleware {
return body + "\n"
}
try {
let jv = JsonValue.fromStr(body)
match (jv.kind()) {
case JsObject =>
let obj = jv.asObject()
let newObj = JsonObject()
for ((k, v) in obj.getFields()) {
match (v.kind()) {
case JsString =>
let str = v.asString().getValue()
if (str.size > maxLen) {
newObj.put(k, JsonString(str[0..maxLen] + "...(${str.size})"))
} else {
newObj.put(k, v)
}
case _ => newObj.put(k, v)
}
// 用 simapi_serialization 解析为动态结构,仅截断超长字符串字段(保持结构)
let map = JsonSerializer.Deserialize<HashMap<String, Any>>(body)
var sb = StringBuilder()
sb.append("{")
var first = true
for ((k, v) in map) {
if (!first) { sb.append(",") }
sb.append("\"${SimApiJson.escapeJson(k)}\":")
if (let s: String <- v) {
if (s.size > maxLen) {
sb.append("\"${SimApiJson.escapeJson(s[0..maxLen])}...(${s.size})\"")
} else {
sb.append("\"${SimApiJson.escapeJson(s)}\"")
}
return newObj.toString() + "\n"
case _ => ()
} else {
sb.append(SimApiJson.json(Some(v)))
}
first = false
}
sb.append("}")
return sb.toString() + "\n"
} catch (_: Exception) {
}
// 非 JSON 或解析失败:整串按长度截断