Maison > Article > développement back-end > Réunifier les octets de données partiels dans une structure personnalisée
J'ai des données sous la forme de map[string][]byte
, où key est la balise de champ json de la structure et value est la tranche d'octets.
Considérez cet exemple :
type Tweet struct { UserId int `json:"user_id"` Message string `json:"message"` }
data = { "user_id":<some bytes>, "message":<some bytes> }
var t Tweet
Comment désorganiser les données de champ correspondantes dans une structure Tweet, qui peut contenir des champs de n'importe quel type, c'est-à-dire des tranches/cartes/types personnalisés/types de pointeurs ? Dois-je mapper les données de chaque champ individuellement une par une ou existe-t-il une méthode générale ?
J'ai essayé de rassembler toutes les données et de les désorganiser dans un type struct, mais il semble que cela modifie en interne les données réelles et ne fonctionne pas.
bytes, err := json.Marshal(data) var t Tweet err = json.Unmarshal(bytes,&t)
Je pense que vous n'avez pas mentionné votre erreur, mais ce qui suit a fonctionné pour moi. Vous pouvez essayer ceci.
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) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!