GOLANG_GOOGLE Telegram 2975
πŸŒ€ Go 1.25 приносит ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄ JSON-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: encoding/json/v2 β€” пСрСработанная с нуля систСма сСриализации с Π³ΠΈΠ±ΠΊΠΎΠΉ настройкой, высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½ΠΎΠ²Ρ‹ΠΌ API

Π§Ρ‚ΠΎ измСнилось:

● ΠŸΡ€ΡΠΌΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с io.Writer ΠΈ io.Reader
НовыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MarshalWrite ΠΈ UnmarshalRead ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ JSON Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π±Π΅Π· создания Encoder/Decoder. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.

● ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° JSON
Появился ΠΌΠΎΠ΄ΡƒΠ»ΡŒ jsontext с функциями MarshalEncode ΠΈ UnmarshalDecode, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΈΡˆΡƒΡ‚ JSON ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π·Π° Ρ€Π°Π·. Π­Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для систСм, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… большиС JSON-ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Kubernetes.

● Гибкая настройка
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Marshal ΠΈ Unmarshal ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠΏΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ парсСра:
- OmitZeroStructFields(true) β€” ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ поля
- StringifyNumbers(true) β€” числа ΠΊΠ°ΠΊ строки
- MatchCaseInsensitiveNames(true) β€” ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° рСгистра
- FormatNilMapAsNull(true) β€” nil`-ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΊΠ°ΠΊ `null
- WithIndent(" ") β€” отступы Π² JSON

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

json.Marshal(
user,
json.OmitZeroStructFields(true),
json.StringifyNumbers(true),
jsontext.WithIndent(" "),
)


● НовоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
Π’Π΅ΠΏΠ΅Ρ€ΡŒ:

JSON-парсинг чувствитСлСн ΠΊ рСгистру

Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊΠ»ΡŽΡ‡ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹

НСизвСстныС поля ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅

МоТно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ опциями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MatchCaseInsensitiveNames)

● УскорСниС дСсСриализации
Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСписан β€” ускорСниС дСсСриализации Π² 2.7–10.2 Ρ€Π°Π·. ΠŸΡ€ΠΈ использовании ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… API (UnmarshalJSONFrom) β€” прирост Π΄ΠΎ 40Γ—.

● Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ статус
API Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ encoding/json ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Π½ΠΎ json/v2 доступСн ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„Π»Π°Π³Π°:



GOEXPERIMENT=jsonv2


Π­Ρ‚ΠΎ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… Π°ΠΏΠ΄Π΅ΠΉΡ‚ΠΎΠ² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Go Π·Π° послСдниС Π³ΠΎΠ΄Ρ‹. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с тяТёлыми JSON-структурами, большими ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ строгого контроля сСриализации.

πŸ“Œ ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

@golang_google

#golang #go #JSON
πŸ”₯139πŸ‘24❀18



tgoop.com/Golang_google/2975
Create:
Last Update:

πŸŒ€ Go 1.25 приносит ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄ JSON-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: encoding/json/v2 β€” пСрСработанная с нуля систСма сСриализации с Π³ΠΈΠ±ΠΊΠΎΠΉ настройкой, высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½ΠΎΠ²Ρ‹ΠΌ API

Π§Ρ‚ΠΎ измСнилось:

● ΠŸΡ€ΡΠΌΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с io.Writer ΠΈ io.Reader
НовыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MarshalWrite ΠΈ UnmarshalRead ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ JSON Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π±Π΅Π· создания Encoder/Decoder. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.

● ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° JSON
Появился ΠΌΠΎΠ΄ΡƒΠ»ΡŒ jsontext с функциями MarshalEncode ΠΈ UnmarshalDecode, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΈΡˆΡƒΡ‚ JSON ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π·Π° Ρ€Π°Π·. Π­Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для систСм, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… большиС JSON-ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Kubernetes.

● Гибкая настройка
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Marshal ΠΈ Unmarshal ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠΏΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ парсСра:
- OmitZeroStructFields(true) β€” ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ поля
- StringifyNumbers(true) β€” числа ΠΊΠ°ΠΊ строки
- MatchCaseInsensitiveNames(true) β€” ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° рСгистра
- FormatNilMapAsNull(true) β€” nil`-ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΊΠ°ΠΊ `null
- WithIndent(" ") β€” отступы Π² JSON

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

json.Marshal(
user,
json.OmitZeroStructFields(true),
json.StringifyNumbers(true),
jsontext.WithIndent(" "),
)


● НовоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
Π’Π΅ΠΏΠ΅Ρ€ΡŒ:

JSON-парсинг чувствитСлСн ΠΊ рСгистру

Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊΠ»ΡŽΡ‡ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹

НСизвСстныС поля ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅

МоТно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ опциями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MatchCaseInsensitiveNames)

● УскорСниС дСсСриализации
Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСписан β€” ускорСниС дСсСриализации Π² 2.7–10.2 Ρ€Π°Π·. ΠŸΡ€ΠΈ использовании ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… API (UnmarshalJSONFrom) β€” прирост Π΄ΠΎ 40Γ—.

● Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ статус
API Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ encoding/json ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Π½ΠΎ json/v2 доступСн ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„Π»Π°Π³Π°:



GOEXPERIMENT=jsonv2


Π­Ρ‚ΠΎ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… Π°ΠΏΠ΄Π΅ΠΉΡ‚ΠΎΠ² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Go Π·Π° послСдниС Π³ΠΎΠ΄Ρ‹. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с тяТёлыми JSON-структурами, большими ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ строгого контроля сСриализации.

πŸ“Œ ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

@golang_google

#golang #go #JSON

BY Golang










Share with your friend now:
tgoop.com/Golang_google/2975

View MORE
Open in Telegram


Telegram News

Date: |

The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he β€œallowed them to exist.” Avoid compound hashtags that consist of several words. If you have a hashtag like #marketingnewsinusa, split it into smaller hashtags: β€œ#marketing, #news, #usa. With the administration mulling over limiting access to doxxing groups, a prominent Telegram doxxing group apparently went on a "revenge spree." How to Create a Private or Public Channel on Telegram?
from us


Telegram Golang
FROM American