RSS Telegram YouTube Apple Яндекс Spotify Amazon Почта

109. Go1.25: JSON v2

07.07.2025

Скачать

К списку выпусков

Ссылки выпуска:

Postman предоставляет прокси подобно mitmproxy

Telethon для написания клиентов - мой проект

Go: JSON v2

В версии 1.25, которая выйдет этой осенью появится JSON v2. Это не значит, что нужно обязательно переходить на эту версию, однако ознакомиться с её функционалом будет полезно. Пакет реализован с использованием дженериков. Находится в директории v2 в encoding/json. Состоит всего из 7 функций. Также появился encoding/json/jsontext - это такой движок, а точнее потоковый токенайзер и парсер JSON объектов. Можно получать последовательно токены, анализировать, писать токены. v2 же занимается меппингом из внутреннего представления в типы Go и наоборот. Планируется, что v1 и v2 будут работать на базе jsontext пакета.

Маршалинг в v2 по скорости остался почти такой же, а вот анмашралинг ускорился от 3 до 10 раз.

MarshalWrite и UnmarshalRead для работы с одним JSON-объектом.

Добавлены опции, которые позволяют конфигурировать как будет работать маршалинг и анмаршалинг. Можно использовать опции из пакета json/v2 и из json/jsontext

Добавлены опции вроде inline для embed (встроенных) структур и unknown. Последняя очень полезна для отладки - позволяет при Unmarshal накапливать все необъявленные в структуре Go поля: Data map[string]any `json:",unknown"`

Для кастомного маршалинга по-прежнему поддерживаются MarshalJSON и UnmarshalJSON, но рекомендуется для повышения производительности использовать MarshalJSONTo и UnmarshalJSONFrom.

Важные резличия v1 и v2: