Ich habe Daten in der Form map[string][]byte
, wobei Schlüssel das JSON-Feld-Tag der Struktur und Wert das Byte-Slice ist.
Betrachten Sie dieses Beispiel:
type Tweet struct { UserId int `json:"user_id"` Message string `json:"message"` }
data = { "user_id":<some bytes>, "message":<some bytes> }
var t Tweet
Wie entmarshaliere ich die entsprechenden Felddaten in eine Tweet-Struktur, die Felder jeden Typs enthalten kann, d. h. Slices/Maps/benutzerdefinierte Typen/Zeigertypen? Muss ich die Daten jedes Felds einzeln einzeln zuordnen oder gibt es eine allgemeine Möglichkeit?
Ich habe versucht, die gesamten Daten zu Marshallen und wieder in einen Strukturtyp zu entmarshallen, aber es scheint, als würde es die tatsächlichen Daten intern ändern und nicht funktionieren.
bytes, err := json.Marshal(data) var t Tweet err = json.Unmarshal(bytes,&t)
Ich glaube, Sie haben Ihren Fehler nicht erwähnt, aber das Folgende hat bei mir funktioniert. Sie können dies versuchen.
package main import ( "encoding/json" "fmt" ) type Tweet struct { UserId int `json:"user_id"` Message string `json:"message"` } func main() { // Example data: map of field tags to JSON-encoded byte slices data := map[string]json.RawMessage{ "user_id": []byte(`123`), // Encoded as a JSON number "message": []byte(`"Hello, world!"`), // Encoded as a JSON string } // Convert map to JSON jsonData, err := json.Marshal(data) if err != nil { fmt.Println("Error marshalling map to JSON:", err) return } // Unmarshal JSON into Tweet struct var t Tweet if err := json.Unmarshal(jsonData, &t); err != nil { fmt.Println("Error unmarshalling JSON:", err) return } // Output the result fmt.Printf("Unmarshalled: %+v\n", t) // Marshal the Tweet struct back into JSON marshalledData, err := json.Marshal(t) if err != nil { fmt.Println("Error marshalling Tweet struct to JSON:", err) return } // Output the marshalled JSON fmt.Printf("Marshalled: %s\n", marshalledData) }
Das obige ist der detaillierte Inhalt vonTeildatenbytes in eine benutzerdefinierte Struktur entpacken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!