Tagi JSON
Steruj marshalingiem
Tagi JSON to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Tagi JSON sterują serializacją
Pakiet encoding/json używa tagów json do określania nazw kluczy i reguł podczas konwertowania struktur na JSON i z JSON.
Domyślne nazwy pól
Bez tagów klucze JSON dokładnie odpowiadają nazwom eksportowanych pól, łącznie z wielkością liter.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}Zmiana nazw kluczy
Tag json zmienia nazwę klucza w wyniku. W tym przykładzie Name staje się nazwą zapisaną małymi literami.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Age int "json:\"age\""
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}Opcja omitempty
Dodanie ,omitempty pomija pole w wyniku, gdy ma ono wartość zerową (pusty napis, 0, nil itd.).
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Email string "json:\"email,omitempty\""
}
func main() {
b, _ := json.Marshal(User{Name: "Ann"})
fmt.Println(string(b))
}Pomijanie pola
Tag - informuje koder o całkowitym pominięciu pola. Jest to przydatne w przypadku poufnych danych, takich jak hasła.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Password string "json:\"-\""
}
func main() {
b, _ := json.Marshal(User{"Ann", "secret"})
fmt.Println(string(b))
}Deserializacja z użyciem tagów
Tagi działają w obu kierunkach. Podczas dekodowania JSON tag informuje dekoder, który klucz JSON ma wypełnić dane pole.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
var u User
json.Unmarshal([]byte("{\"name\":\"Bob\"}"), &u)
fmt.Println(u.Name)
}Dopasowanie bez uwzględniania wielkości liter
Podczas deserializacji Go awaryjnie dopasowuje klucze JSON do tagów bez uwzględniania wielkości liter. Mimo to jawne definiowanie tagów jest bezpiecznym i czytelnym rozwiązaniem.
Opcja string
Opcja ,string koduje pole liczbowe lub bool jako napis JSON. Jest przydatna w systemach, które wymagają liczb zapisanych w cudzysłowie.
package main
import (
"encoding/json"
"fmt"
)
type Item struct {
ID int "json:\"id,string\""
}
func main() {
b, _ := json.Marshal(Item{ID: 42})
fmt.Println(string(b))
}Łączenie opcji
Można połączyć nazwę z opcjami: json:"email,omitempty". Najpierw podaje się nazwę, a następnie opcje oddzielone przecinkami.
Pola nieeksportowane są pomijane
Serializowane są tylko pola eksportowane (zapisane wielką literą). Pole zapisane małą literą jest niewidoczne dla encoding/json, niezależnie od przypisanego tagu.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
age int
}
func main() {
b, _ := json.Marshal(User{Name: "Ann", age: 30})
fmt.Println(string(b))
}Czytelny wynik
json.MarshalIndent formatuje JSON z użyciem wcięć, co ułatwia czytanie logów, a jednocześnie nadal uwzględnia tagi.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}Szybkie sprawdzenie
Co robi opcja ,omitempty w tagu json?
Podsumowanie
Tagi JSON sterują serializacją:
- Zmieniają nazwy kluczy za pomocą
json:"name" ,omitemptypomija wartości zerowe-ignoruje pole, a,stringzapisuje liczby jako tekst- Kodowane są tylko pola eksportowane
Często zadawane pytania
Czy lekcja „Tagi JSON” jest bezpłatna?
Tak — pełny tekst „Tagi JSON” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Tagi JSON”?
Steruj marshalingiem Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Tagi JSON”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.