This commit is contained in:
Mrx
2026-03-06 16:28:25 +08:00
parent 3d8775b6dc
commit 57d18be972
2 changed files with 92 additions and 2 deletions

View File

@@ -51,9 +51,54 @@ func ProcessQYGLJ0Q1Request(ctx context.Context, params []byte, deps *processors
return nil, errors.Join(processors.ErrSystem, err) 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 { if err != nil {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)
} }
return respBytes, nil 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
}
}

View File

@@ -42,9 +42,54 @@ func ProcessQYGLUY3SRequest(ctx context.Context, params []byte, deps *processors
return nil, errors.Join(processors.ErrSystem, err) 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 { if err != nil {
return nil, errors.Join(processors.ErrSystem, err) return nil, errors.Join(processors.ErrSystem, err)
} }
return respBytes, nil 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
}
}