mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2026-03-01 20:25:37 +08:00
优化配置重载程序
This commit is contained in:
@@ -7,7 +7,7 @@ import (
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
)
|
||||
|
||||
func MapToObject(m maps.Map, ptr interface{}) error {
|
||||
func MapToObject(m maps.Map, ptr any) error {
|
||||
if m == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -18,7 +18,7 @@ func MapToObject(m maps.Map, ptr interface{}) error {
|
||||
return json.Unmarshal(mJSON, ptr)
|
||||
}
|
||||
|
||||
func ObjectToMap(ptr interface{}) (maps.Map, error) {
|
||||
func ObjectToMap(ptr any) (maps.Map, error) {
|
||||
if ptr == nil {
|
||||
return maps.Map{}, nil
|
||||
}
|
||||
@@ -33,3 +33,12 @@ func ObjectToMap(ptr interface{}) (maps.Map, error) {
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func Copy(destPtr any, srcPtr any) error {
|
||||
data, err := json.Marshal(srcPtr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = json.Unmarshal(data, destPtr)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
package jsonutils
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func PrintT(obj interface{}, t *testing.T) {
|
||||
func PrintT(obj any, t *testing.T) {
|
||||
data, err := json.MarshalIndent(obj, "", " ")
|
||||
if err != nil {
|
||||
t.Log(err)
|
||||
@@ -15,3 +16,17 @@ func PrintT(obj interface{}, t *testing.T) {
|
||||
t.Log(string(data))
|
||||
}
|
||||
}
|
||||
|
||||
func Equal(obj1 any, obj2 any) bool {
|
||||
data1, err := json.Marshal(obj1)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
data2, err := json.Marshal(obj2)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return bytes.Equal(data1, data2)
|
||||
}
|
||||
|
||||
26
internal/utils/jsonutils/utils_test.go
Normal file
26
internal/utils/jsonutils/utils_test.go
Normal file
@@ -0,0 +1,26 @@
|
||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||
|
||||
package jsonutils_test
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeNode/internal/utils/jsonutils"
|
||||
"github.com/iwind/TeaGo/assert"
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestEqual(t *testing.T) {
|
||||
var a = assert.NewAssertion(t)
|
||||
|
||||
{
|
||||
var m1 = maps.Map{"a": 1, "b2": true}
|
||||
var m2 = maps.Map{"b2": true, "a": 1}
|
||||
a.IsTrue(jsonutils.Equal(m1, m2))
|
||||
}
|
||||
|
||||
{
|
||||
var m1 = maps.Map{"a": 1, "b2": true, "c": nil}
|
||||
var m2 = maps.Map{"b2": true, "a": 1}
|
||||
a.IsFalse(jsonutils.Equal(m1, m2))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user