π Go 1.25 ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΌΠΎΡΠ½ΡΠΉ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ JSON-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
Π§ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ:
β ΠΡΡΠΌΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ
ΠΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
β ΠΠΎΡΠΎΠΊΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° JSON
ΠΠΎΡΠ²ΠΈΠ»ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ
β ΠΠΈΠ±ΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
-
-
-
-
-
ΠΡΠΈΠΌΠ΅Ρ:
β ΠΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ:
JSON-ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ
ΠΡΠ±Π»ΠΈΡΡΡΡΠΈΠ΅ΡΡ ΠΊΠ»ΡΡΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ
ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅
ΠΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MatchCaseInsensitiveNames)
β Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½ β ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² 2.7β10.2 ΡΠ°Π·. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ API (UnmarshalJSONFrom) β ΠΏΡΠΈΡΠΎΡΡ Π΄ΠΎ 40Γ.
β ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΡΡ
API Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ encoding/json ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Π½ΠΎ json/v2 Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»Π°Π³Π°:
ΠΡΠΎ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ Π°ΠΏΠ΄Π΅ΠΉΡΠΎΠ² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Go Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ. ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΠΆΡΠ»ΡΠΌΠΈ JSON-ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ, Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠΎΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
π ΠΠΎΠ»Π½ΡΠΉ ΡΠ°Π·Π±ΠΎΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ
@golang_google
#golang #go #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
tg-me.com/Golang_google/2975
Create:
Last Update:
Last Update:
π Go 1.25 ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΌΠΎΡΠ½ΡΠΉ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ JSON-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
Π§ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ:
β ΠΡΡΠΌΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ
ΠΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
β ΠΠΎΡΠΎΠΊΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° JSON
ΠΠΎΡΠ²ΠΈΠ»ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ
β ΠΠΈΠ±ΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
-
-
-
-
-
ΠΡΠΈΠΌΠ΅Ρ:
β ΠΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ:
JSON-ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ
ΠΡΠ±Π»ΠΈΡΡΡΡΠΈΠ΅ΡΡ ΠΊΠ»ΡΡΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ
ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅
ΠΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MatchCaseInsensitiveNames)
β Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½ β ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² 2.7β10.2 ΡΠ°Π·. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ API (UnmarshalJSONFrom) β ΠΏΡΠΈΡΠΎΡΡ Π΄ΠΎ 40Γ.
β ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΡΡ
API Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ encoding/json ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Π½ΠΎ json/v2 Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»Π°Π³Π°:
ΠΡΠΎ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ Π°ΠΏΠ΄Π΅ΠΉΡΠΎΠ² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Go Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ. ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΠΆΡΠ»ΡΠΌΠΈ JSON-ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ, Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠΎΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
π ΠΠΎΠ»Π½ΡΠΉ ΡΠ°Π·Π±ΠΎΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ
@golang_google
#golang #go #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:
tg-me.com/Golang_google/2975