String から Float64 への型変換による JSON のデコード
浮動小数点数を含む JSON 文字列をデコードするときに、エラー「json: 文字列を float64 型の Go 値にアンマーシャリングできません。」この問題は、JSON デコーダが数値を文字列から float64 型に自動的に変換しようとするときに発生します。
この問題を解決するには、",構造体定義内の string" タグ:
type Product struct { Name string Price float64 `json:",string"` }
このタグを追加すると、JSON デコーダーは "price" フィールドを文字列として扱います。 float64 でエンコードされ、デコード中に適切な変換が可能になります。
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) } }
この変更により、プログラムは JSON 文字列を正常にデコードし、「価格」フィールドを float64 型に正しく変換できるようになりました。
以上がJSON をデコードするときに「json: 文字列を float64 型の Go 値にアンマーシャリングできません」エラーを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。