Conceptos básicos de JSON con GoLang

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *