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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值