Сегодня мы рассмотрим, как читать файлы и как преобразовывать файлы JSON в структуру Go!
1 – Как прочитать список файлов в папке
С библиотекой io/ioutil это действительно просто. С помощью следующего кода вы сможете перечислить все файлы в папке и посмотреть, является ли это каталогом или нет.
package main import ( "io/ioutil" "log" ) ... files, err := ioutil.ReadDir("./path/to/a/folder") if err != nil { log.Fatal(err) } for _, file := range files { fmt.Println(file.Name(), file.IsDir()) } ...
2 – Как прочитать файл?
С библиотекой io/ioutil все очень просто и состоит всего из нескольких строк кода.
content, err := ioutil.ReadFile("file_name.txt") if err != nil { log.Fatal(err) }
3 – Как преобразовать файл JSON в структуру Go?
Поскольку мы знаем, как читать файл, мы рассмотрим, как преобразовать его в Go struct. Имея содержимое файла, мы можем преобразовать его в экземпляр struct.
Но сначала, чтобы дать приложению понять, как выполнять преобразование, нам нужно сделать некоторые вещи в объявлении struct, который мы хотим использовать.
Для каждого поля нам нужно добавить параметр json, чтобы сообщить эквивалентное json-имя.
type Creature struct { Name string `json:"Name"` Tags []string `json:"Tags"` HP CreatureHP `json:"HP"` } type CreatureHP struct { Value int `json:"Value"` Notes string `json:"Notes"` }
Теперь, когда у нас есть готовая структура Creature, мы можем выполнить преобразование с помощью следующего кода:
// Declaration of the instance of the struct that we want to fill creature := bestiary.Creature{} // Fill the instance from the JSON file content err = json.Unmarshal(content, &creature) // Check if is there any error while filling the instance if err != nil { panic(err) }
И все! Теперь вы можете использовать этот инстанс, как и все остальные, которые вы можете создать в вашем приложении Golang!