Sinot
@Sinot

Как преобразовать структуру в JSON?

Приветствую!

И сразу к сути.
package main

import (
	"fmt"
	"encoding/json"
)

type Department struct {
	Id int
	Name string
	Phone string
}

func main() {
	a := Department {1, "test", "12-32"}
	fmt.Println(a)

	b, _ := json.Marshal(a)
	fmt.Println(string(b))
}


{1 test 12-32}
{"Id":1,"Name":"test","Phone":"12-32"}


Но если название свойства в структуре с маленькой буквы:
package main

import (
	"fmt"
	"encoding/json"
)

type Department struct {
	Id int
	name string
	Phone string
}

func main() {
	a := Department {1, "test", "12-32"}
	fmt.Println(a)

	b, _ := json.Marshal(a)
	fmt.Println(string(b))
}


{1 test 12-32}
{"Id":1,"Phone":"12-32"}


Почему так и главное как победить?

Спасибо.
  • Вопрос задан
  • 1162 просмотра
Решения вопроса 2
@FireGM
Добавлю. Чтобы json выводил поля с маленькой буквы, надо прописать тег.
type Department struct {
  Id int `json:"id"`
  Name string `json:"name"`
  Phone string `json:"phone"`
}

`json:"name"` - вместо name можно написать что угодно, в json это поле будет под таким именем.
Например:
type Department struct {
  Id int `json:"id"`
  Name string `json:"name"`
  Phone string 
  AnyField string `json:"part"`
}

выведет
{id: 123, name: "Имя", Phone: "123", part: "AnyField"}
Ответ написан
Комментировать
Поля, названные с маленькой буквы считаются private, поэтому в json не попадают. Таким же образом работают имена переменных в пакете, например. Читайте основы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы