分享

golang之json小谈

 quasiceo 2017-08-22

有时会有这种需求,将一个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\n", jt)
    } else {
        fmt.Println(err)
        fmt.Printf("%+v\n", 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是被编码成字符串的浮点数

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多