Я пытаюсь найти лучший способ создать этот JSON объект, используя Go:
{
"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 отдельные переменные (host, ip, ma c). Например, 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)
}
}
}
Итак, в рамках этого для l oop я бы хотел построить JSON упомянутый выше объект. Я пробовал со структурами, но я действительно не понимаю, как их использовать. Я сделал это с помощью Ruby, для чего потребовалось несколько строк кода, но Go кажется довольно сложной задачей (для меня это так!). В ruby это делается так:
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