Files
EdgeNode/internal/utils/jsonutils/map.go

45 lines
784 B
Go
Raw Normal View History

2021-07-18 15:51:49 +08:00
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package jsonutils
import (
"encoding/json"
"github.com/iwind/TeaGo/maps"
)
2022-11-25 10:50:57 +08:00
func MapToObject(m maps.Map, ptr any) error {
2021-07-18 15:51:49 +08:00
if m == nil {
return nil
}
mJSON, err := json.Marshal(m)
if err != nil {
return err
}
return json.Unmarshal(mJSON, ptr)
}
2022-11-25 10:50:57 +08:00
func ObjectToMap(ptr any) (maps.Map, error) {
2021-07-18 15:51:49 +08:00
if ptr == nil {
return maps.Map{}, nil
}
ptrJSON, err := json.Marshal(ptr)
if err != nil {
return nil, err
}
var result = maps.Map{}
err = json.Unmarshal(ptrJSON, &result)
if err != nil {
return nil, err
}
return result, nil
}
2022-11-25 10:50:57 +08:00
func Copy(destPtr any, srcPtr any) error {
data, err := json.Marshal(srcPtr)
if err != nil {
return err
}
err = json.Unmarshal(data, destPtr)
return err
}