go beego框架与python实现数据交互

目标:将go中一个二维数组传到pythone中处理并返回。难点在于数据格式的转换。

go代码如下:

package main

import (
    "os/exec"
    "syscall"
    "github.com/astaxie/beego"
    "encoding/json"
)

func main() {
    a := [][]float64{
        {1,2},
        {3,4},
    }
    json_a,_:=json.Marshal(a)
    string_a:=string(json_a)
    cmd := exec.Command("python", "test.py",string_a)
    cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
    var ret [][]float64
    out, _ := cmd.Output()
    err := json.Unmarshal(out, &ret)
    beego.Debug(err)
    beego.Debug(ret)
}
test.python文件如下:
import json

def setParam(argv):
    param={}
    param["a"] = json.loads(argv[1])
    return param

if __name__ == '__main__':
    param = setParam(sys.argv)
    a = param["a"]
    print(a)

可以看到python中处理的结果是将我们go中传来的二维数组原封不动返回回去。

数据传输过程如下:

1.在go中,先将二维数组用 json.Marshal 编码为json,并以字符串形式传到python中,传的时候使用命令行cmd。

2.在python中,使用 json.loads 将接收到的数据解码。并输出。(python输出的格式会自动转为json格式)

3.数据传回go中,在go中使用 json.Unmarshal 解码得到传回的数据。




原文地址:https://www.cnblogs.com/zheng123/p/9755784.html