我有下面的全部代码:
我希望将字符串转换为golang中的map,并使用golang反射。
以下代码是从我的项目简化而来的。
我希望得到以下结果:
我希望将字符串转换为golang中的map,并使用golang反射。
以下代码是从我的项目简化而来的。
package main
import (
"encoding/json"
"fmt"
"reflect"
)
func main() {
jsonStr := `{"name": "thinkerou", "age": 31, "balance": 3.14}`
var a map[string]interface{}
var value reflect.Value = reflect.ValueOf(&a)
// call function and pass param
f(jsonStr, value)
// print result
fmt.Println(value.Kind(), value.Interface())
}
func f(v string, value reflect.Value) {
personMap := make(map[string]interface{})
err := json.Unmarshal([]byte(v), &personMap)
if err != nil {
panic(err)
}
value = reflect.Indirect(value)
value = reflect.MakeMap(value.Type())
for k, v := range personMap {
// set key/value
value.SetMapIndex(reflect.ValueOf(k), reflect.ValueOf(v))
}
// print result
fmt.Println(value.Kind(), value.Interface())
}
运行它并获得结果:
map map[age:31 balance:3.14 name:thinkerou]
ptr &map[]
我希望得到以下结果:
map map[age:31 balance:3.14 name:thinkerou]
map map[age:31 balance:3.14 name:thinkerou]
我该如何传递 reflect.Value
参数?谢谢!
json.Unmarshal([]byte(v), &personMap)
就可以实现。请参见https://play.golang.org/p/fPEikxh0lDv,您能否详细解释一下? - Ravi R