"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo acceder a claves y valores JSON profundamente anidados en Go?

¿Cómo acceder a claves y valores JSON profundamente anidados en Go?

Publicado el 2024-11-08
Navegar:372

How to Access Deeply Nested JSON Keys and Values in Go?

Acceso a claves y valores JSON profundamente anidados en Go

Cuando se trabaja con estructuras de datos JSON complejas, puede resultar complicado recuperar valores profundamente anidados utilizando únicamente interfaces Go estándar. Para superar esto, considere utilizar el paquete go-simplejson (github.com/bitly/go-simplejson).

Este paquete proporciona una API fácil de usar para navegar por datos JSON a través de una sintaxis simple. Así es como puede acceder a los valores de "tiempo" en su JSON determinado usando go-simplejson:

package main

import (
    "encoding/json"
    "fmt"
    "github.com/bitly/go-simplejson"
)

func main() {
    msg := `{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}`
    jsonBytes := []byte(msg)
    js, err := simplejson.NewJson(jsonBytes)
    if err != nil {
        fmt.Println(err)
        return
    }

    // Retrieve "time" values
    timeValue, err := js.Get("args").GetIndex(0).Get("time").String()
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("Retrieved time:", timeValue)
}

Al utilizar go-simplejson, puede recorrer fácilmente estructuras JSON anidadas y recuperar valores utilizando métodos como Get, GetIndex y String.

Para estructuras de datos complejas, también puede definir su propia estructura de tipo para representar los datos JSON. Por ejemplo, podría crear la siguiente estructura:

type TimeInfo struct {
    Time string
}

type DataStruct struct {
    Name string
    Args []TimeInfo
}

Para descomponer su JSON en esta estructura, puede usar el siguiente código:

var dataStruct DataStruct
err = json.Unmarshal(jsonBytes, &dataStruct)
if err != nil {
    fmt.Println(err)
    return
}

Este enfoque proporciona una forma más estructurada de representar sus datos JSON, lo que facilita su trabajo y mantenimiento.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3