// package main ... package wshandler import ( "bytes" "encoding/json" "fmt" "reflect" "testing" ) type TestReceiver struct { } func (tr *TestReceiver) Func1([]any) { } func (tr *TestReceiver) Func2(args []any) { fmt.Println(args...) } func TestUnmarshalToken(t *testing.T) { // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 // 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 insrc := []byte(`["string value 1",200,["inner string value 1","inner string value 2"],{"inner map key 1":"inner map string value 1","inner map key 2":"inner map string value 2"},500.1]`) dec := json.NewDecoder(bytes.NewBuffer(insrc)) dec.Token() for { token_start := dec.InputOffset() tok, _ := dec.Token() token_end := dec.InputOffset() var string_val_1 string stringtype := reflect.TypeOf(string_val_1) stringvalue := reflect.New(stringtype) castptr := stringvalue.Interface() err := json.Unmarshal(insrc[token_start:token_end], castptr) fmt.Println(err) if tok == nil { break } fmt.Println(tok, dec.InputOffset()) } // src := []any{"a", 1, false} // payload, _ := json.Marshal(src) // tr := new(TestReceiver) // receiver := MakeWebsocketApiHandler(tr, "test") // var con WebsocketApiBroker // con.AddHandler(receiver) } func TestUnmarshal(t *testing.T) { src := []byte(`{"123" :"str1", "456": "str2"}`) var test map[int]string err := json.Unmarshal(src, &test) if err != nil { t.Error(err) } }