WedX - журнал о программировании и компьютерных науках

список структур как json golang

Я пытаюсь вернуть json со списком в каждом свойстве, но я всегда получаю списки как пустые списки. Кажется, у меня ошибка внутри структуры, но я не могу ее найти.

У меня есть две структуры:

type CalendarDay struct {
    day     int    `json:"day"`
    weekday string `json:"weekday"`
}

type CalendarYear struct {
    January   []CalendarDay `json:"january"`
    February  []CalendarDay `json:"february"`
    March     []CalendarDay `json:"march"`
    April     []CalendarDay `json:"april"`
    May       []CalendarDay `json:"may"`
    June      []CalendarDay `json:"june"`
    July      []CalendarDay `json:"july"`
    August    []CalendarDay `json:"august"`
    September []CalendarDay `json:"september"`
    October   []CalendarDay `json:"october"`
    November  []CalendarDay `json:"november"`
    December  []CalendarDay `json:"december"`
}

Я пытаюсь вернуть json как:

{
    "january": [{1 Thursday}, ...]
    ...
}

но я получаю:

{
    "january": [{}, {}, {} ...]
    ...
}

Мой API:

func Calendar(w http.ResponseWriter, r *http.Request) {
    fmt.Println("GET /")
    year := getYear(2015)
    json.NewEncoder(w).Encode(year)
}

func getMonthDays(month time.Month, year int) []CalendarDay {
    cdays := []CalendarDay{}
    for i := 1; i <= daysIn(month, year); i++ {
        date := time.Date(year, month, i, 0, 0, 0, 0, time.UTC)
        weekday := date.Weekday()
        cday := CalendarDay{
            day:     date.Day(),
            weekday: weekday.String()}
        cdays = append(cdays, cday)
    }
    return cdays
}

func getYear(year int) CalendarYear {
    yearCal := CalendarYear{
        January:   getMonthDays(time.January, year),
        February:  getMonthDays(time.February, year),
        March:     getMonthDays(time.March, year),
        April:     getMonthDays(time.April, year),
        May:       getMonthDays(time.May, year),
        June:      getMonthDays(time.June, year),
        July:      getMonthDays(time.July, year),
        August:    getMonthDays(time.August, year),
        September: getMonthDays(time.September, year),
        October:   getMonthDays(time.October, year),
        November:  getMonthDays(time.November, year),
        December:  getMonthDays(time.December, year)}
    return yearCal
}

Что я делаю неправильно?

13.12.2015

  • Что такое daysIn функция? 13.12.2015

Ответы:


1

Экспортируйте поля в CalendarDay, начав имя с символа верхнего регистра.

type CalendarDay struct {
    Day     int    `json:"day"`
    Weekday string `json:"weekday"`
}

Пакет encoding/json и подобные пакеты игнорируют неэкспортированные поля.

13.12.2015
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]