读取执行脚本后暂存在内存中的JSON数据,返回Buffer缓冲器:
func cmd() bytes.Buffer {
//test 是一个可执行文件,打印JSON数据
cmd := exec.Command("/home/project/test","-j")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
fmt.Printf("Command finished with error: %v\n", err)
}
//cmd.Process.Release()
return out
}
将字节数组转化为JSON数据:
type JsonStruct struct {
}
func NewJsonStruct() *JsonStruct {
return &JsonStruct{}
}
func (jst *JsonStruct) Load(data []byte, v interface{}) {
//读取的数据为非json格式,需要进行解码
err := json.Unmarshal(data, v)
if err != nil {
return
}
}
type Info struct {
Name string `json:"name"`
Sex bool `json:"sex"`
Hobbies []string `json:"hobbies"`
}
func ReadCmd() (v *Info) {
data := cmd()
Load(data.Bytes(), &v)
return v
}
调用 ReadCmd
接口,即可实现读取、分析可执行文件输出到内存中的JSON数据