1. 程式人生 > >golang中json小談之字串轉浮點數

golang中json小談之字串轉浮點數

有時會有這種需求,將一個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是被編碼成字串的浮點數

本文轉載詳細內容:
作者:wu_sphinx
連結:http://www.jianshu.com/p/9856478555c5
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。