ホームページ >バックエンド開発 >Golang >JSON をデコードするときに「json: 文字列を float64 型の Go 値にアンマーシャリングできません」エラーを処理する方法

JSON をデコードするときに「json: 文字列を float64 型の Go 値にアンマーシャリングできません」エラーを処理する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-31 14:15:10559ブラウズ

How to Handle

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。