第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解碼類型從字符串轉(zhuǎn)換為float64的JSON

如何解碼類型從字符串轉(zhuǎn)換為float64的JSON

Go
紫衣仙女 2021-05-03 17:15:39
我需要使用浮點數(shù)對JSON字符串進行解碼,例如:{"name":"Galaxy Nexus", "price":"3460.00"}我使用下面的Golang代碼: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)    }}當我運行它時,得到的結果是:json: cannot unmarshal string into Go value of type float64{Name:Galaxy Nexus Price:0}我想知道如何使用convert類型解碼JSON字符串。
查看完整描述

3 回答

?
有只小跳蛙

TA貢獻1824條經(jīng)驗 獲得超8個贊

只是讓您知道可以不Unmarshal使用而可以執(zhí)行此操作json.decode。這是圍棋場


package main


import (

    "encoding/json"

    "fmt"

    "strings"

)


type Product struct {

    Name  string `json:"name"`

    Price float64 `json:"price,string"`

}


func main() {

    s := `{"name":"Galaxy Nexus","price":"3460.00"}`

    var pro Product

    err := json.NewDecoder(strings.NewReader(s)).Decode(&pro)

    if err != nil {

        fmt.Println(err)

        return

    }

    fmt.Println(pro)

}


查看完整回答
反對 回復 2021-05-10
?
開滿天機

TA貢獻1786條經(jīng)驗 獲得超13個贊

避免將字符串轉(zhuǎn)換為[]字節(jié):b := []byte(s)。它分配一個新的內(nèi)存空間,并將整個內(nèi)容復制到其中。


strings.NewReader界面比較好。以下是godoc的代碼:


package main


import (

    "encoding/json"

    "fmt"

    "io"

    "log"

    "strings"

)


func main() {

    const jsonStream = `

    {"Name": "Ed", "Text": "Knock knock."}

    {"Name": "Sam", "Text": "Who's there?"}

    {"Name": "Ed", "Text": "Go fmt."}

    {"Name": "Sam", "Text": "Go fmt who?"}

    {"Name": "Ed", "Text": "Go fmt yourself!"}

`

    type Message struct {

        Name, Text string

    }

    dec := json.NewDecoder(strings.NewReader(jsonStream))

    for {

        var m Message

        if err := dec.Decode(&m); err == io.EOF {

            break

        } else if err != nil {

            log.Fatal(err)

        }

        fmt.Printf("%s: %s\n", m.Name, m.Text)

    }

}


查看完整回答
反對 回復 2021-05-10
  • 3 回答
  • 0 關注
  • 310 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號