Convertir JSON a Struct en Go

Sheeraz Gul 20 junio 2023
  1. Use el método Unmarshal para convertir JSON a Struct en Go
  2. Convierta una matriz de JSON en Struct en Go
  3. Convierta un JSON anidado en Struct en Go
Convertir JSON a Struct en Go

Este tutorial demuestra cómo convertir JSON en una estructura en GoLang.

Use el método Unmarshal para convertir JSON a Struct en Go

El paquete encoding/json de GoLang proporciona una función Unmarshal, que convierte datos JSON a formato de bytes. Esta función puede analizar los datos JSON estructurados y no estructurados en el formulario []byte.

Podemos usar esta conversión de bytes para convertir el JSON en una estructura. Probemos un ejemplo para convertir JSON en una estructura usando el método Unmarshal:

package main

import (
    "encoding/json"
    "fmt"
)

type Employee struct {
    Name     string
    ID       int
    Salary   int
    Position string
}

func main() {
    EmployeeJSON := `{"Name": "Sheeraz", "ID": 10, "Salary": 3000, "Position": "Senior Developer" }`

    var employees Employee

    json.Unmarshal([]byte(EmployeeJSON), &employees)

    fmt.Printf("Name: %s, ID: %d , Salary: %d , Position: %s", employees.Name, employees.ID, employees.Salary, employees.Position)

    fmt.Println("\n", employees)
}

El código anterior convierte el JSON dado en una estructura utilizando el método Unmarshal de la biblioteca estándar JSON de GoLang. Ver la salida:

Name: Sheeraz, ID: 10 , Salary: 3000 , Position: Senior Developer

{Sheeraz 10 3000 Senior Developer}

Program exited.

Convierta una matriz de JSON en Struct en Go

Como podemos ver, el ejemplo anterior convierte un solo JSON en una estructura, pero ¿qué pasa si tenemos una matriz de JSON? Probemos un ejemplo para convertir la matriz de JSON en una estructura:

package main

import (
    "encoding/json"
    "fmt"
)

type Employee struct {
    Name     string
    ID       int
    Salary   int
    Position string
}

func main() {
    EmployeeJSON := `[{"Name": "Sheeraz", "ID": 10, "Salary": 3000, "Position": "Senior Developer" },
    {"Name": "Jack", "ID": 20, "Salary": 2000, "Position": "Junior Developer" },
    {"Name": "John", "ID": 30, "Salary": 1500, "Position": "Junior Developer" },
    {"Name": "Mike", "ID": 40, "Salary": 1000, "Position": "Intern" }
    ]`

    var employees []Employee

    json.Unmarshal([]byte(EmployeeJSON), &employees)

    fmt.Printf("Employees Structs : %+v", employees)
}

El código anterior convertirá la matriz de JSON en una matriz de estructuras. Ver la salida:

Employees Structs : [
{Name:Sheeraz ID:10 Salary:3000 Position:Senior Developer}
{Name:Jack ID:20 Salary:2000 Position:Junior Developer}
{Name:John ID:30 Salary:1500 Position:Junior Developer}
{Name:Mike ID:40 Salary:1000 Position:Intern}]
Program exited.

Convierta un JSON anidado en Struct en Go

Los JSON también se crean en forma anidada donde un campo en JSON contiene otro campo. Para convertir este tipo de JSONS, tenemos que crear estructuras anidadas.

Veamos un ejemplo:

package main

import (
    "encoding/json"
    "fmt"
)

type EmployeeType struct {
    Gender   string
    Contract string
}

type Employee struct {
    Name         string
    ID           int
    Salary       int
    Position     string
    EmployeeType EmployeeType
}

func main() {
    EmployeeJSON := `{"Name": "Sheeraz", "ID": 10, "Salary": 3000, "Position": "Senior Developer", "EmployeeType": {"Gender": "Male" ,"Contract": "Fulltime"}  }`

    var employees Employee

    json.Unmarshal([]byte(EmployeeJSON), &employees)

    fmt.Printf("Name: %s, ID: %d , Salary: %d , Position: %s, Gender: %s, Contract: %s",
        employees.Name, employees.ID, employees.Salary, employees.Position, employees.EmployeeType.Gender, employees.EmployeeType.Contract)

    fmt.Println("\n", employees)
}

El código anterior convertirá un objeto JSON anidado en una estructura anidada. Ver la salida:

Name: Sheeraz, ID: 10 , Salary: 3000 , Position: Senior Developer, Gender: Male, Contract: Fulltime
{Sheeraz 10 3000 Senior Developer {Male Fulltime}}

Program exited.
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Go JSON