如何解码类型为从字符串转换为 float64 的 JSON
技术问答
475 人阅读
|
0 人回复
|
2023-09-12
|
我需要使用浮点数解码 JSON 字符串,如:
, c" @& u* D' y{"name":"Galaxy Nexus","price":"3460.00"}, V% E6 C7 {; y5 H0 `& }4 B
我用下面的 Golang 代码:
% r, O" I! F! G' C0 @ K. @2 L$ R% x! B9 L# W! T+ G
- package mainimport "encoding/json" "fmt")type Product struct Name string Price float64}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) code]当我运行它时,我得到了结果:[code]json: cannot unmarshal string into Go value of type float64{Name:Galaxy Nexus Price:0}
* f+ F8 r) A& |) _$ q* k 我想知道如何使用类型转换解码 JSON 字符串。4 S: |$ N* s; {. p# t
7 n7 t; i! i, k: w. R6 r
解决方案: ; n* E3 N5 v; q$ M' c2 R7 l* {/ x
答案要简单得多。只需添加告诉 JSON interpeter 它是一 float64 编码字符串,string(请注意,我只改了Price定义):" d) G2 ~5 M2 J
[code]package mainimport "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) code] |
|
|
|
|
|