arrays - 要构造的字符串数组

标签 arrays json go

这是我执行的命令

$ ps -e
  PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
 4372       1    4372       4372  ?         197608 03:44:57 /usr/bin/mintty
 6476    4372    6476       6208  pty0      197608 03:44:58 /usr/bin/bash
14484    6476   14484      12888  pty0      197608 13:23:48 /usr/bin/ps

我使用 bufio scanner.scanLines 获得一维字符串数组。我需要将其转换为结构数组:

type ProcessInfo struct {
    PID string `json:"PID"`
    PPID string `json:"PPID"`
    PGID string `json:"PGID"`
    WINPID string    `json:"WINPID"`
    TTY   string `json:"TTY"`
    UID string `json:"UID"`
    STIME string `json:"STIME"`
    COMMAND string `json:"COMMAND"`
}

如有任何帮助,我们将不胜感激。

最佳答案

有一个方便的 strings.Fieldsstrings 中发挥作用帮助解析这种输出的包。 Go 喜欢务实的方法,所以天真的实现是:

  • 遍历您的数组并将每一行拆分为以空格作为分隔符的字段
  • 从这些字段构造新的 ProcessInfo 对象
  • 将这个对象添加到数组中

假设你的数组被命名为lines,就做这样的事情:

var pinfos []ProcessInfo
for _, line := range lines {
    fields := strings.Fields(line)

    pi := ProcessInfo{
        PID:     fields[0],
        PPID:    fields[1],
        PGID:    fields[2],
        WINPID:  fields[3],
        TTY:     fields[4],
        UID:     fields[5],
        STIME:   fields[6],
        COMMAND: fields[7],
    }

    pinfos = append(pinfos, pi)
}

查看完整代码: https://play.golang.org/p/wo8FFiYabA

关于arrays - 要构造的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39669009/

相关文章:

c++ - 数组作为指针传递的不明确重载

json - 展平 kusto 列中的嵌套 json

go - 源代码缺少函数体,如何编译?

javascript - 解析 Python 字典中的 javaScript 数组

java - 如何附加到数组实例变量的数组?

php - Json转Mysql数据库

java - 从数据库获取对象时,java.lang.String类型的值连接无法转换为JSONObject

oauth - 如何使用 Google API 交换 OAUTH token ( Go )

go - 将方法添加到不同文件中的 golang 结构

Ruby Array - 删除前 10 位数字