Próbuję przekonwertować strukturę Go na JSON przy użyciu json
pakietu, ale wszystko, co dostaję, to {}
. Jestem pewien, że jest to coś całkowicie oczywistego, ale nie widzę tego.
package main
import (
"fmt"
"encoding/json"
)
type User struct {
name string
}
func main() {
user := &User{name:"Frank"}
b, err := json.Marshal(user)
if err != nil {
fmt.Printf("Error: %s", err)
return;
}
fmt.Println(string(b))
}
Potem, gdy próbuję go uruchomić, otrzymuję to:
$ 6g test.go && 6l -o test test.6 && ./test
{}
`json:"name"`
na końcu definicji pola struct, aby zachować nazwę wyjściową.Powiązany problem:
Miałem problem z konwersją struct na JSON, wysyłając go jako odpowiedź od Golanga, a potem złapałem to samo w JavaScript przez Ajax.
Zmarnowałem dużo czasu, więc opublikuj rozwiązanie tutaj.
In Go:
W JavaScript:
Mam nadzieję, że to komuś pomoże.
Powodzenia.
źródło
Wartości struktur kodowane są jako obiekty JSON. Każde wyeksportowane pole struktury staje się członkiem obiektu, chyba że:
Puste wartości to false, 0, dowolny wskaźnik zerowy lub wartość interfejsu oraz dowolna tablica, plasterek, mapa lub łańcuch o długości zero. Domyślny ciąg klucza obiektu to nazwa pola strukturalnego, ale można go określić w wartości znacznika pola strukturalnego. Klucz „json” w wartości znacznika pola struct to nazwa klucza, po której następuje opcjonalny przecinek i opcje.
źródło
Możesz zdefiniować własne niestandardowe metody MarshalJSON i UnmarshalJSON i celowo kontrolować, co powinno być uwzględnione, np .:
źródło