|
|
@@ -223,42 +223,87 @@ func TransformType6(arg1 string) (string, error) {
|
|
|
// ProcessDeviceTime 解析设备和创建时间数据,入参为JSON字符串,返回带data包裹的JSON字符串
|
|
|
func TransformType8(arg1 string) (string, error) {
|
|
|
// 定义入参结构体(匹配输入的code/msg/data格式)
|
|
|
- type inputStruct struct {
|
|
|
- Code int `json:"code"`
|
|
|
- Msg string `json:"msg"`
|
|
|
- Data struct {
|
|
|
- Level string `json:"level"`
|
|
|
- Msg string `json:"msg"`
|
|
|
+ // type inputStruct struct {
|
|
|
+ // Code int `json:"code"`
|
|
|
+ // Msg string `json:"msg"`
|
|
|
+ // Data struct {
|
|
|
+ // Level string `json:"level"`
|
|
|
+ // Msg string `json:"msg"`
|
|
|
+ // } `json:"data"`
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // // 用jsoniter解析输入JSON字符串
|
|
|
+ // var input inputStruct
|
|
|
+ // if err := jsoniter.UnmarshalFromString(arg1, &input); err != nil {
|
|
|
+ // return "", err
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // // 清理msg中的无效占位符(修复%!s(MISSING))
|
|
|
+ // cleanMsg := strings.ReplaceAll(input.Data.Msg, "%!s(MISSING)", "")
|
|
|
+ // // 去除末尾多余的、号
|
|
|
+ // cleanMsg = strings.TrimSuffix(cleanMsg, "、")
|
|
|
+ //
|
|
|
+ // // 构造仅单层data包裹的输出结构
|
|
|
+ // output := struct {
|
|
|
+ // Data struct {
|
|
|
+ // Level string `json:"level"`
|
|
|
+ // Msg string `json:"msg"`
|
|
|
+ // } `json:"data"`
|
|
|
+ // }{}
|
|
|
+ // output.Data.Level = input.Data.Level
|
|
|
+ // output.Data.Msg = cleanMsg
|
|
|
+ //
|
|
|
+ // // 用jsoniter序列化为JSON字符串返回
|
|
|
+ // result, err := jsoniter.MarshalToString(output)
|
|
|
+ // if err != nil {
|
|
|
+ // return "", err
|
|
|
+ // }
|
|
|
+ // return result, nil
|
|
|
+ // 1. 解析输入JSON(data为数组结构)
|
|
|
+ var input struct {
|
|
|
+ Data []struct {
|
|
|
+ MetricEnCode string `json:"metric_en_code"`
|
|
|
+ MetricVal string `json:"metric_val"`
|
|
|
+ MetricName string `json:"metric_name"`
|
|
|
} `json:"data"`
|
|
|
}
|
|
|
-
|
|
|
- // 用jsoniter解析输入JSON字符串
|
|
|
- var input inputStruct
|
|
|
if err := jsoniter.UnmarshalFromString(arg1, &input); err != nil {
|
|
|
return "", err
|
|
|
}
|
|
|
|
|
|
- // 清理msg中的无效占位符(修复%!s(MISSING))
|
|
|
- cleanMsg := strings.ReplaceAll(input.Data.Msg, "%!s(MISSING)", "")
|
|
|
- // 去除末尾多余的、号
|
|
|
- cleanMsg = strings.TrimSuffix(cleanMsg, "、")
|
|
|
+ // 2. 初始化默认值(对齐Python)
|
|
|
+ level := "良好"
|
|
|
+ var msgBuilder strings.Builder // 高效拼接字符串,替代Python的+=
|
|
|
|
|
|
- // 构造仅单层data包裹的输出结构
|
|
|
+ // 3. 遍历data数组,复刻Python的分支逻辑
|
|
|
+ for _, line := range input.Data {
|
|
|
+ if line.MetricEnCode == "water_quality" {
|
|
|
+ // 水质指标:判断值是否为"0",修改等级
|
|
|
+ if line.MetricVal == "0" {
|
|
|
+ level = "一般"
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 其他指标:拼接"指标名是值、"
|
|
|
+ if msgBuilder.Len() > 0 {
|
|
|
+ msgBuilder.WriteString("、") // 用分隔符替代末尾rstrip,更高效
|
|
|
+ }
|
|
|
+ msgBuilder.WriteString(line.MetricName + "是" + line.MetricVal)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 构造输出(单层data包裹)
|
|
|
output := struct {
|
|
|
Data struct {
|
|
|
Level string `json:"level"`
|
|
|
Msg string `json:"msg"`
|
|
|
} `json:"data"`
|
|
|
}{}
|
|
|
- output.Data.Level = input.Data.Level
|
|
|
- output.Data.Msg = cleanMsg
|
|
|
+ output.Data.Level = level
|
|
|
+ output.Data.Msg = msgBuilder.String() // 无需rstrip,天然无末尾多余分隔符
|
|
|
|
|
|
- // 用jsoniter序列化为JSON字符串返回
|
|
|
- result, err := jsoniter.MarshalToString(output)
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
- }
|
|
|
- return result, nil
|
|
|
+ // 5. 序列化为JSON字符串返回
|
|
|
+ res, err := jsoniter.MarshalToString(output)
|
|
|
+ return res, err
|
|
|
}
|
|
|
|
|
|
func TransformType15(arg1 string) (string, error) {
|