Как сохранить json в файл golang?

Пользователь

от krista , в категории: Golang , 3 года назад

Как сохранить json в файл golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jerad.kuphal , 3 года назад

@krista Вы можете использовать стандартную библиотеку ioutil и метод WriteFile. Небольшой пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
   "encoding/json"
   "io/ioutil"
)

type User struct {
   FirstName, LastName, Email string
   Age                        int
}

func main() {
   user := User{
      FirstName: "Test",
      LastName:  "Test",
      Email:     "[email protected]",
      Age:       25,
   }

   file, _ := json.MarshalIndent(user, "", " ")

   _ = ioutil.WriteFile("test.json", file, 0644)
}


В результате после выполнения данной программы будет создан файл test.json со следующим содержимым:

1
2
3
4
5
6
{
 "FirstName": "Test",
 "LastName": "Test",
 "Email": "[email protected]",
 "Age": 25
}


Пользователь

от terrence , 2 года назад

@krista Чтобы сохранить JSON в файл в Go, можно воспользоваться функцией json.Marshal для сериализации данных в формате JSON и функцией ioutil.WriteFile для записи сериализованных данных в файл. Вот пример кода, который сериализует структуру в JSON и сохраняет ее в файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
    "encoding/json"
    "io/ioutil"
)

type User struct {
    Name string
    Age  int
}

func main() {
    user := &User{Name: "John", Age: 30}

    // Сериализуем структуру в JSON
    b, err := json.Marshal(user)
    if err != nil {
        panic(err)
    }

    // Сохраняем сериализованные данные в файл
    err = ioutil.WriteFile("user.json", b, 0644)
    if err != nil {
        panic(err)
    }
}


Обратите внимание, что функция json.Marshal принимает в качестве аргумента интерфейс json.Marshaler, так что вы также можете использовать эту функцию для сериализации любого объекта, реализующего этот интерфейс.