decoding json con la conversión de tipo de string a float64 in go
analizando las cadenas JSON que contienen valores de flotación 64 pueden plantear desafíos cuando los valores se almacenan como cadenas. Para abordar este problema, GO proporciona una solución directa.
Comprender el error:
al intentar decodificar una cadena JSON como "{" Nombre ":" Galaxy Nexus "," precio ":" 3460.00 "} usando la función JSON.unmarshal a continuación. Error:
json: cannot unmarshal string into Go value of type float64
Este error ocurre porque el decodificador JSON intenta convertir la representación de cadena del número de float64 a un valor float64 directamente, que no se admite. Annotation
Para resolver este problema, debe instruir explícitamente al decodificador que trate la cadena como un Float64 usando una anotación de conversión de tipo. Esta anotación se agrega a la definición de campo en la estructura del producto:
type el producto struct { Cadena de nombre Precio float64 `json:", cadena "` }la etiqueta ", String" le dice al decodificador JSON que el campo de precio es una cadena que debe convertirse a un Float64.
type Product struct { Name string Price float64 `json:",string"` }
Código actualizado:
aquí es el código GO actualizado: Main importar ( "Codificación/JSON" "FMT" ) Tipo de estructura de producto { Cadena de nombre Precio float64 `json:", cadena "` } func Main () { S: = `{" nombre ":" Galaxy Nexus "," Precio ":" 3460.00 "}` Producto VAR Pro err: = json.unmarshal ([] byte (s) y pro) Si err == nil { fmt.printf ("% v \ n", pro) } demás { fmt.println (err) fmt.printf ("% v \ n", pro) } }
Expected Output:package main import ( "encoding/json" "fmt" ) type Product struct { Name string Price float64 `json:",string"` } func main() { s := `{"name":"Galaxy Nexus", "price":"3460.00"}` var pro Product err := json.Unmarshal([]byte(s), &pro) if err == nil { fmt.Printf("% v\n", pro) } else { fmt.Println(err) fmt.Printf("% v\n", pro) } }
Running this code will produce the expected output:{Name:Galaxy Nexus Price:3460}
The json.Unmarshal function successfully decoded the JSON string and converted the price from a string to a float64.
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