牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-12-19 投稿人: 浏览次数:506

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

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

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

package main

import (
    "encoding/json"
    "fmt"
)

type JsonTest struct {
    X string  `json:"x"`
    Y float64 `json:"y"`
}

func main() {
    s := `{"x":"golang", "y":"520.1314"}`
    var jt JsonTest
    err := json.Unmarshal([]byte(s), &jt)
    if err == nil {
        fmt.Printf("%+v
", jt)
    } else {
        fmt.Println(err)
        fmt.Printf("%+v
", jt)
    }
}

会报错:

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

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

type JsonTest struct {
    X string  `json:"x"`
    Y float64 `json:"y,string"`
}

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

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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。