Saltar al contenido

Accediendo a mapa anidado de tipo mapa[string]interfaz{} en Golang

Después de consultar con especialistas en el tema, programadores de varias áreas y maestros dimos con la solución a la cuestión y la compartimos en esta publicación.

Solución:

la notación x.(T) se llama aserción de tipo.

Para una expresión x de tipo de interfaz y un tipo Tla expresión principal x.(T) afirma que x no es nil y que el valor almacenado en x es de tipo T.

Tu ejemplo:

result["args"].(map[string]interface)["foo"]

Significa que el valor de su results mapa asociado con key "args" es de tipo map[string]interface (otro mapa con string keys y cualquier valor). Y desea acceder al elemento de ese mapa asociado con el key "foo".

Si conoce el formato JSON de entrada, entonces sí, debe usar un genérico map[string]interface escriba para procesarlo. Si conoce la estructura exacta del JSON de entrada, puede crear un struct para que coincida con los campos esperados, y al hacerlo, puede descomponer un texto JSON en un valor de su personalizado struct escriba, por ejemplo:

type Point struct 
    Name string
    X, Y int


func main() 
    in := `"Name":"center","X":2,"Y":3`

    pt := Point
    json.Unmarshal([]byte(in), &pt)

    fmt.Printf("Result: %+v", pt)

Producción:

Result: Name:center X:2 Y:3

Pruébalo en el Go Playground.

Modelando su entrada

Su entrada JSON actual podría modelarse con este tipo:

type Data struct 
    Args struct 
        Foo string
    

Y accediendo Foo (pruébalo en el Go Playground):

d := Data
json.Unmarshal([]byte(in), &d)
fmt.Println("Foo:", d.Args.Foo)

Reseñas y puntuaciones del artículo

Agradecemos que quieras amparar nuestra investigación ejecutando un comentario y dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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