2015-04-14 2 views
0

Я не уверен, как это сделать или слово это. У меня есть переменная, которая возвращает строку что-то вроде этого:Создайте массив JSON или срез в Go

unixCommands := exec.Command("ls", "/bin") 
unixCommandsout, err := unixCommands.Output() 
unixCommandsstring := string(unixCommandsout) 
fmt.Printf(unixCommandsstring) 

Выход:

unicode_start 
unicode_stop 
unlink 
usleep 
vi 
view 
ypdomainname 
zcat 

Я ищу для создания массива JSON или то, что проще всего добраться до этой конечной продукции:

["unicode_start", "unicode_stop", "unlink", "usleep", "vi", "view", "ypdomainname", "zcat"] 

ответ

1

Вы можете сделать это с помощью пакета encoding/json:

outputSlice := strings.Split(unixCommandsstring,"\n") 
js,_ := json.Marshal(outputSlice) 
fmt.Print(string(js)) 
+3

, конечно же, в производственной системе вы действительно захватили бы ошибку из 'json.Marshal' и сделаете что-нибудь с ней :) – rpkamp

+0

@ScallioXTX Нет, здесь это не нужно. 'json.Marshal' никогда не терпит неудачу при передаче строкового фрагмента. – rightfold

+1

@ rightfold, так что вы точно знаете, что текущие и * все будущие реализации JSON-маршаллинга будут выполняться для всех возможных входов (например, unicode, недопустимый UTF-8, вне памяти/буфер и т. Д.)? Намного легче и лучше привыкнуть проверять возврат 'error' всякий раз, когда он предоставляется. Если вы думаете, что это никогда не сработает, возможно, используйте панику (но в этом случае, конечно, «os.Exec» может выйти из строя, так что окружающая функция должна будет возвращать ошибки в любом случае). Предположение о том, что ошибки можно игнорировать, безрассудно. –

Смежные вопросы