我正在尝试找到使用 Go 创建此 JSON 对象的最佳方法:
{
"Clients" : [
{
"Hostname" : "example.com",
"IP" : "127.0.0.1",
"MacAddr" : "mactonight"
},
{
"Hostname" : "foo.biz",
"IP" : "0.0.0.0",
"MacAddr" : "12:34:56:78"
}
]
}
在我现有的代码中,我目前正在分割多个字符串行,然后将每行拆分为 3 个单独的变量(主机、ip、mac)。例如hostname 192.168.1.0 F0:F0:F0:F0:F0被连续转换。
这是通过以下代码完成的:
func parselines(line string){
for _, line := range strings.Split(line, "\n") {
if line != "" {
s := strings.Split(line, " ")
host, ip, mac := s[0], s[1], s[2]
fmt.Println("Hostname: " + host + " IP: " + ip + " MAC: " + mac)
}
}
}
所以在这个 for 循环中,我希望构建上面提到的 JSON 对象。我已经尝试过使用结构,但我真的很困惑如何使用它们。我已经用 Ruby 完成了这项工作,这需要几行代码,但 Go 似乎非常具有挑战性(对我来说就是这样!)。在红宝石中它是这样完成的:
require 'json'
clients = []
STDIN.each do |line|
fields = line.split(/\s+/)
clients << {
Hostname: fields[0],
IP: fields[1],
MacAddr: fields[2]
}
end
connections = {}
connections[:Clients] = clients
puts connections.to_json