lancet
lancet copied to clipboard
v2 版本里面structtomap 存在一个bug
1 在转化的过程会吧deciaml 类型转化成map[] 这是个灾难,
2质疑一定要把所有的成员的类型全部转化成map 么, ?
3 是否把成员的struct 类型用interface 直接返回更安全呢? 特别遇到自定义类型又没有定json tag 的类型 如果第三点是成立的那么func (f *Field) mapValue(value any) any { ``` val := pointer.ExtractPointer(value) v := reflect.ValueOf(val) var ret any
switch v.Kind() {
case reflect.Struct:
ret = v.Interface()
func main() {
type TempStruct struct {
Ip string `json:"ip"`
Data decimal.Decimal `json:"data"`
Temp map[string]interface{} `json:"temp"`
X complex128 `json:"x"`
}
type BigData struct {
CCC string `json:"CCC"`
Data TempStruct `json:"data"`
}
tempdata := &TempStruct{
Ip: "aaa",
Data: decimal.NewFromInt(10),
Temp: map[string]interface{}{
"aaa": "bbb",
},
X: complex(1, 2),
}
bigdata := BigData{
CCC: "123123",
Data: *tempdata,
}
t, _ := convertor2.StructToMap(bigdata)
fmt.Printf("----->>>>>%+v", t)
//fmt.Printf("----->>>>>%+v", t["data"].(TempStruct).Temp)
//fmt.Printf("%+v\n", structs.New(tempdata))
//fmt.Println(convertor.StructToMap(tempdata))
}
4
测试用例: