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



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: |

2How to set up a Telegram channel? (A step-by-step tutorial) Matt Hussey, editorial director at NEAR Protocol also responded to this news with β€œ#meIRL”. Just as you search β€œBear Market Screaming” in Telegram, you will see a Pepe frog yelling as the group’s featured image. End-to-end encryption is an important feature in messaging, as it's the first step in protecting users from surveillance. Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you: While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc.
from us


Telegram Golang
FROM American