我需要将python的字典解析为golang的地图,并且我使用了一个名为“ go-python”的软件包。 现在,我使用python的msgpack将字典打包为一个字节数组,以及如何将其解析为golang的[] byte。
func GoMap(dict *python.PyObject) map[string]interface{} {
pymp := python.PyImport_ImportModule("msgpack")
pack := pymp.GetAttrString("packb")
packArgs := python.PyTuple_New(1)
python.PyTuple_SetItem(packArgs, 0, dict)
temp := pack.Call(packArgs, python.PyDict_New())
tempLen := python.PyString_Size(temp)
bstr := python.PyString_AsString(temp)
fmt.Println("len temp", tempLen)
fmt.Println("len bstr", len(bstr))
bytestr := []byte(bstr)
var out map[string]interface{}
err := msgpack.Unmarshal(bytestr, &out)
if err != nil {
panic(err)
}
return out
}
结果:
len temp 370
len bstr 148
恐慌:EOF
我使用Pystring_AsString解析python的字节数组进入str,如果dict的值为0,则得到eof