TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Go & IT

1 Aug 2025, 10:30

Открыть в Telegram Поделиться Пожаловаться

Продолжаем разбираться с go1.25 который должен выйти уже в этом месяце. В предыдущих версиях encoding/json struct-теги были довольно ограниченными, но в новом пакете encoding/json/v2 появилась мощная опция format, которая позволяет задавать специальное форматирование для разных типов: дат, чисел, байтовых массивов и тд. Пример:
package main

import (
"encoding/json/v2" // импортируем новый пакет
"math"
"time"
)

type Data struct {
// time.Duration в формате "1h0m0s" (строка)
Duration time.Duration `json:"duration,format:units"`

// time.Duration в секундах (числом)
DurationSec time.Duration `json:"duration_sec,format:sec"`

// time.Time в формате "YYYY-MM-DD"
Date time.Time `json:"date,format:'2006-01-02'"`

// []byte как base64url
B64 []byte `json:"b64,format:base64url"`

// float64 с поддержкой NaN и ±Inf в виде строки
Val float64 `json:"val,format:nonfinite"`

// nil slice выводится как null (а не [])
List []int `json:"list,format:emitnull"`
}

func main() {
data := Data{
Duration: time.Hour,
DurationSec: time.Hour,
Date: time.Now(),
B64: []byte("base64url"),
Val: math.NaN(),
}

dataJson, err := json.Marshal(data)
// ...
}
Получившийся json:
{
"duration": "1h0m0s",
"duration_sec": 3600,
"date": "2025-08-01",
"b64": "YmFzZTY0dXJs",
"val": "NaN",
"list": null
}
Раньше приходилось вручную реализовывать MarshalJSON или писать вспомогательные поля, теперь же стало чуточку удобнее 🙌

1.2k 0 9 1 24
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot