如何解码类型为从字符串转换为 float64 的 JSON
技术问答
432 人阅读
|
0 人回复
|
2023-09-12
|
我需要使用浮点数解码 JSON 字符串,如:4 N8 X7 t8 i' ~
{"name":"Galaxy Nexus","price":"3460.00"}6 H5 H3 p* r" {# N6 i8 j4 _. g
我用下面的 Golang 代码:
* w( k! T$ K; K5 t7 a
/ V- T4 s2 O4 ]) G/ z- 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}' E0 R) M. D0 f6 `( e6 y
我想知道如何使用类型转换解码 JSON 字符串。
7 Q2 d! ~4 I7 ^% [3 j8 ^/ d/ B' j 2 c" L& S ?$ U; L$ E' W1 i1 q
解决方案:
% d$ x1 u) ~1 l 答案要简单得多。只需添加告诉 JSON interpeter 它是一 float64 编码字符串,string(请注意,我只改了Price定义):% I# i+ i- F! W/ D) Q9 J. b" R, v
[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] |
|
|
|
|
|