golang中json小谈之字符串转浮点数

怼烎@ 2022-06-02 21:18 250阅读 0赞

有时会有这种需求,将一个json数据形如:

  1. {"x":"golang", "y":"520.1314"}

中的y反序列化为浮点类型,如果这样写:

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. )
  6. type JsonTest struct {
  7. X string `json:"x"`
  8. Y float64 `json:"y"`
  9. }
  10. func main() {
  11. s := `{"x":"golang", "y":"520.1314"}`
  12. var jt JsonTest
  13. err := json.Unmarshal([]byte(s), &jt)
  14. if err == nil {
  15. fmt.Printf("%+v\n", jt)
  16. } else {
  17. fmt.Println(err)
  18. fmt.Printf("%+v\n", jt)
  19. }
  20. }

会报错:

  1. json: cannot unmarshal string into Go struct field JsonTest.y of type float64

将结构体JsonTest定义改为如下,即可解决战斗:

  1. type JsonTest struct {
  2. X string `json:"x"`
  3. Y float64 `json:"y,string"`
  4. }

这样写可以告诉golang的json解释器变量y是被编码成字符串的浮点数

本文转载详细内容:
作者:wu_sphinx
链接:http://www.jianshu.com/p/9856478555c5
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

表情:
评论列表 (有 0 条评论,250人围观)

还没有评论,来说两句吧...

相关阅读

    相关 点数--定点数

    知识准备: 1. 输出浮点数的十六进制形式?(利用指针输出) 将浮点数指针-转换成-整型指针,以十六进制的格式输出指针内容。 示例程序: include