回答

收藏

如何解码类型为从字符串转换为 float64 的 JSON

技术问答 技术问答 476 人阅读 | 0 人回复 | 2023-09-12

我需要使用浮点数解码 JSON 字符串,如:% T. k% n! _3 v
    {"name":"Galaxy Nexus","price":"3460.00"}
    4 V7 F5 ~# u. C9 k) L+ z: q
我用下面的 Golang 代码:
- `" v9 E6 [  f  J6 D
    . u' G' I, M! i
  • 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}3 L+ S2 c6 N# W' U) u3 J: f+ a3 p+ H1 L: F
我想知道如何使用类型转换解码 JSON 字符串。" F2 _, I5 w: ]
                                                                & S- V# B2 Z1 z
    解决方案:                                                               
0 w& c  x$ B) A; G0 r" v                                                                答案要简单得多。只需添加告诉 JSON interpeter 它是一 float64 编码字符串,string(请注意,我只改了Price定义):
4 R& r& F; y- h2 k8 }[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]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则