Go で String から float64 への型変換を使用して JSON をデコードする
float64 値を含む JSON 文字列を解析すると、値の保存時に問題が発生する可能性があります文字列として。この問題に対処するために、Go は簡単な解決策を提供します。
エラーについて:
「{"name":"Galaxy Nexus」のような JSON 文字列をデコードしようとしたとき", "price":"3460.00"}" json.Unmarshal 関数を使用すると、次のような問題が発生する可能性があります。 error:
json: cannot unmarshal string into Go value of type float64
このエラーは、JSON デコーダが float64 数値の文字列表現を float64 値に直接変換しようとするために発生しますが、これはサポートされていません。
解決策:型変換アノテーション
この問題を解決するには、デコーダに明示的に処理を指示する必要があります。型変換アノテーションを使用した float64 としての文字列。この注釈は、Product 構造体のフィールド定義に追加されます。
type Product struct { Name string Price float64 `json:",string"` }
「,string」タグは、Price フィールドが float64 に変換する必要がある文字列であることを JSON デコーダーに伝えます。
更新されたコード:
更新された Go は次のとおりですコード:
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) } }
期待される出力:
このコードを実行すると、期待される出力が生成されます:
{Name:Galaxy Nexus Price:3460}
json.Unmarshal 関数は正常に実行されました。 JSON 文字列をデコードし、価格を文字列から float64 に変換しました。
以上がGo で文字列として保存された Float64 値を使用して JSON 文字列をデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。