Golang Json 指数を使用した数値のアンマーシャリング
Golang で JSON 文字列を構造体にアンマーシャリングする場合、指数を含む数値は 0 として解釈されることがよくあります。指数は JSON の標準部分であるため、これは困難になる可能性があります。
この問題に対処するには、数値フィールドの型を float32 または float64 に変更する必要があります。これらの浮動小数点型は、指数の表現をサポートします。例:
type Person struct { Id float64 `json:"id"` _Id int64 Name string `json:"name"` }
型を変更した後、JSON 文字列を構造体にアンマーシャリングすると、指数を含む数値が正しく解析されます。
ヘルパー関数を使用した代替アプローチ
数値フィールドを整数にする必要がある場合は、アンマーシャリング後に浮動小数点値を整数型にキャストするヘルパー関数:
import ( "encoding/json" "fmt" "math" "os" "reflect" ) type Person struct { Id float64 `json:"id"` _Id int64 Name string `json:"name"` } var f Person var b = []byte(`{"id": 1.2e+8, "Name": "Fernando"}`) func main() { _ = json.Unmarshal(b, &f) if reflect.TypeOf(f._Id) == reflect.TypeOf((int64)(0)) { fmt.Println(math.Trunc(f.Id)) f._Id = int64(f.Id) } }
この例では、ヘルパー関数 math.Trunc は浮動小数点値を整数に切り捨てます。切り捨てられた値は、_Id フィールドに割り当てられます。
以上がGolang で指数を使用して JSON 数値をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。