package profile import ( "fmt" "os" "testing" cherryJson "github.com/cherry-game/cherry/extend/json" cherryProfile "github.com/cherry-game/cherry/profile" jsoniter "github.com/json-iterator/go" ) func TestProfile(t *testing.T) { m := make(map[string]any) if err := cherryJson.ReadMaps("./profile.json", m); err != nil { t.Fatal(err) } conf := cherryProfile.Wrap(m) for _, key := range conf.Keys() { value := conf.Get(key) dealKV(key, value) } } func TestProfile2(t *testing.T) { json := jsoniter.ConfigFastest b, err := os.ReadFile("./profile.json") if err != nil { t.Fatal(err) } m := map[string]any{} if err = json.Unmarshal(b, &m); err != nil { t.Fatal(err) } conf := jsoniter.Wrap(m) for _, key := range conf.Keys() { value := conf.Get(key) dealKV(key, value) } } func dealKV(key string, value jsoniter.Any) { switch value.ValueType() { case jsoniter.ArrayValue: for i := 0; i < value.Size(); i++ { v := value.Get(i) dealKV(fmt.Sprintf("%s.%d", key, i), v) } case jsoniter.ObjectValue: for _, subKey := range value.Keys() { v := value.Get(subKey) dealKV(fmt.Sprintf("%s.%s", key, subKey), v) } case jsoniter.NumberValue: fmt.Printf("%s: %v\n", key, value.ToFloat64()) default: fmt.Printf("%s: %v\n", key, value.ToString()) } }