JSON es un formato ampliamente utilizado para el intercambio de datos. Golang proporciona varias API de codificación y decodificación para trabajar con JSON, incluidos tipos de datos integrados y personalizados desde y hacia, utilizando el paquete de codificación/json .
Tipos de datos: los tipos de datos predeterminados de Golang para decodificar y codificar JSON son los siguientes:
- bool para JSON booleanos
- float64 para números JSON
- string para strings JSON
- nulo para JSON nulo
- array como array JSON
- mapa o estructura como objeto JSON
1. Estructuras de codificación/clasificación: la función Marshal() en la codificación del paquete /json se usa para codificar los datos en JSON.
Syntax: func Marshal(v interface{}) ([]byte, error)
Ejemplo:
Go
// Golang program to illustrate the // concept of encoding using JSON package main import ( "fmt" "encoding/json" ) // declaring a struct type Human struct{ // defining struct variables Name string Age int Address string } // main function func main() { // defining a struct instance human1 := Human{"Ankit", 23, "New Delhi"} // encoding human1 struct // into json format human_enc, err := json.Marshal(human1) if err != nil { // if error is not nil // print error fmt.Println(err) } // as human_enc is in a byte array // format, it needs to be // converted into a string fmt.Println(string(human_enc)) // converting slices from // golang to JSON format // defining an array // of struct instance human2 := []Human{ {Name: "Rahul", Age: 23, Address: "New Delhi"}, {Name: "Priyanshi", Age: 20, Address: "Pune"}, {Name: "Shivam", Age: 24, Address: "Bangalore"}, } // encoding into JSON format human2_enc, err := json.Marshal(human2) if err != nil { // if error is not nil // print error fmt.Println(err) } // printing encoded array fmt.Println() fmt.Println(string(human2_enc)) }
Producción:
{"Name":"Ankit", "Age":23, "Address":"New Delhi"} [{"Name":"Rahul", "Age":23, "Address":"New Delhi"}, {"Name":"Priyanshi", "Age":20, "Address":"Pune"}, {"Name":"Shivam", "Age":24, "Address":"Bangalore"}]
2. Decodificación/desorganización de estructuras: la función Unmarshal() en la codificación del paquete/json se utiliza para desempaquetar o decodificar los datos de JSON a la estructura.
Syntax: func Unmarshal(data []byte, v interface{}) error
Ejemplo:
Go
// Golang program to illustrate the // concept of decoding using JSON package main import ( "fmt" "encoding/json" ) // declaring a struct type Human struct{ // defining struct variables Name string Address string Age int } // main function func main() { // defining a struct instance var human1 Human // data in JSON format which // is to be decoded Data := []byte(`{ "Name": "Deeksha", "Address": "Hyderabad", "Age": 21 }`) // decoding human1 struct // from json format err := json.Unmarshal(Data, &human1) if err != nil { // if error is not nil // print error fmt.Println(err) } // printing details of // decoded data fmt.Println("Struct is:", human1) fmt.Printf("%s lives in %s.\n", human1.Name, human1.Address) // unmarshalling a JSON array // to array type in Golang // defining an array instance // of struct type var human2 []Human // JSON array to be decoded // to an array Data2 := []byte(` [ {"Name": "Vani", "Address": "Delhi", "Age": 21}, {"Name": "Rashi", "Address": "Noida", "Age": 24}, {"Name": "Rohit", "Address": "Pune", "Age": 25} ]`) // decoding JSON array to // human2 array err2 := json.Unmarshal(Data2, &human2) if err2 != nil { // if error is not nil // print error fmt.Println(err2) } // printing decoded array // values one by one for i := range human2{ fmt.Println(human2[i]) } }
Producción:
Struct is: {Deeksha Hyderabad 21} Deeksha lives in Hyderabad. {Vani Delhi 21} {Rashi Noida 24} {Rohit Pune 25}
Publicación traducida automáticamente
Artículo escrito por vanigupta20024 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA