diff --git a/internal/domains/api/services/processors/qygl/qyglj0q1_processor.go b/internal/domains/api/services/processors/qygl/qyglj0q1_processor.go index 483824b..79850fd 100644 --- a/internal/domains/api/services/processors/qygl/qyglj0q1_processor.go +++ b/internal/domains/api/services/processors/qygl/qyglj0q1_processor.go @@ -51,9 +51,54 @@ func ProcessQYGLJ0Q1Request(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrSystem, err) } - respBytes, err := json.Marshal(data) + // 解析响应中的JSON字符串 + parsedResp, err := ParseJsonResponse(data) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := json.Marshal(parsedResp) if err != nil { return nil, errors.Join(processors.ErrSystem, err) } return respBytes, nil } + +// ParseJsonResponse 直接解析JSON响应数据 +// data: 接口返回的数据 +// Returns: 解析后的数据 +func ParseJsonResponse(data interface{}) (interface{}, error) { + return RecursiveParse(data) +} + +// RecursiveParse 递归解析JSON数据 +func RecursiveParse(data interface{}) (interface{}, error) { + switch v := data.(type) { + case string: + var parsed interface{} + if err := json.Unmarshal([]byte(v), &parsed); err == nil { + return RecursiveParse(parsed) + } + return v, nil + case map[string]interface{}: + for key, val := range v { + parsed, err := RecursiveParse(val) + if err != nil { + return nil, err + } + v[key] = parsed + } + return v, nil + case []interface{}: + for i, item := range v { + parsed, err := RecursiveParse(item) + if err != nil { + return nil, err + } + v[i] = parsed + } + return v, nil + default: + return v, nil + } +} diff --git a/internal/domains/api/services/processors/qygl/qygluy3s_processor.go b/internal/domains/api/services/processors/qygl/qygluy3s_processor.go index d8a3fe4..a205bb3 100644 --- a/internal/domains/api/services/processors/qygl/qygluy3s_processor.go +++ b/internal/domains/api/services/processors/qygl/qygluy3s_processor.go @@ -42,9 +42,54 @@ func ProcessQYGLUY3SRequest(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrSystem, err) } - respBytes, err := json.Marshal(data) + // 解析响应中的JSON字符串 + parsedResp, err := ParseJsonResponse(data) + if err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + respBytes, err := json.Marshal(parsedResp) if err != nil { return nil, errors.Join(processors.ErrSystem, err) } return respBytes, nil } + +// ParseJsonResponse 直接解析JSON响应数据 +// data: 接口返回的数据 +// Returns: 解析后的数据 +func ParseJsonResponse(data interface{}) (interface{}, error) { + return RecursiveParse(data) +} + +// RecursiveParse 递归解析JSON数据 +func RecursiveParse(data interface{}) (interface{}, error) { + switch v := data.(type) { + case string: + var parsed interface{} + if err := json.Unmarshal([]byte(v), &parsed); err == nil { + return RecursiveParse(parsed) + } + return v, nil + case map[string]interface{}: + for key, val := range v { + parsed, err := RecursiveParse(val) + if err != nil { + return nil, err + } + v[key] = parsed + } + return v, nil + case []interface{}: + for i, item := range v { + parsed, err := RecursiveParse(item) + if err != nil { + return nil, err + } + v[i] = parsed + } + return v, nil + default: + return v, nil + } +}