You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.4 KiB
74 lines
1.4 KiB
package transform
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// Obj2mapStr
|
|
// 将map[string]any 转为字符串 a="123",b=234 这种格式
|
|
func Obj2mapStr(fields *strings.Builder, dataMap map[string]any) *strings.Builder {
|
|
ItemCount := 0
|
|
for k, v := range dataMap {
|
|
sValue := ""
|
|
switch v.(type) {
|
|
case []any:
|
|
sValue = strings.ReplaceAll(fmt.Sprintf(`%s="%v"`, k, v), " ", ",")
|
|
case string:
|
|
sValue = fmt.Sprintf(`%s="%v"`, k, v)
|
|
case float64, float32:
|
|
sValue = fmt.Sprintf(`%s=%.5f`, k, v)
|
|
case int64, int32:
|
|
sValue = fmt.Sprintf(`%s=%d`, k, v)
|
|
default:
|
|
mJson, _ := json.Marshal(dataMap)
|
|
log.Printf("数据类型异常[k=%v,v=%v] 原始dataMap=%v", k, v, mJson)
|
|
}
|
|
if len(sValue) > 0 {
|
|
fields.WriteString(sValue)
|
|
}
|
|
ItemCount += 1
|
|
if ItemCount < len(dataMap) {
|
|
fields.WriteString(",")
|
|
}
|
|
|
|
}
|
|
return fields
|
|
}
|
|
|
|
func Numerical(raw map[string]any) map[string]any {
|
|
result := map[string]any{}
|
|
for k, v := range raw {
|
|
switch k {
|
|
case "humanid", "idcard_number":
|
|
result[k] = v
|
|
default:
|
|
result[k] = numerical(v)
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func numerical(d any) any {
|
|
var newV any
|
|
switch d.(type) {
|
|
case int:
|
|
if v, err := strconv.Atoi(d.(string)); err == nil {
|
|
newV = v
|
|
}
|
|
case string:
|
|
if v, err := strconv.ParseFloat(d.(string), 64); err == nil {
|
|
newV = v
|
|
}
|
|
default:
|
|
newV = d
|
|
}
|
|
|
|
if newV == nil {
|
|
newV = d
|
|
}
|
|
return newV
|
|
}
|
|
|