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:
@@ -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 或解析失败:整串按长度截断
|
||||
|
||||
Reference in New Issue
Block a user