golang讀取http的body時遇到的坑

2021-10-05 02:25:22 字數 2662 閱讀 1813

當服務端對http的body進行解析到map[string]inte***ce{}時,會出現cli傳遞的是int型別,而服務端只能斷言成float64,而不能將接收到的本該是int型別的直接斷言為int

nil//設定請求頭

)//注意,這裡斷言成int型別會出錯

}列印型別,發現product_id是float64型別

原因:json中的數字型別沒有對應int,解析出來都是float64

方案二:

type s struct

s := s

jsondata,

_:= json.

marshal

(s)var m map

[string

]inte***ce

json.

unmarshal

(jsondata,

&m) fmt.

println

(reflect.

typeof

(m["product_id"])

) fmt.

println

(reflect.

typeof

(m["f"])

) decoder := jsoniter.

newdecoder

(bytes.

newreader

(jsondata)

) decoder.

usenumber()

decoder.

decode

(&m)

fmt.

println

(reflect.

typeof

(m["product_id"].

(json.number)

.int64)

) fl,

_:= m[

"f"]

.(json.number)

.float64()

fmt.

println

(reflect.

typeof

(fl)

)

解決golang讀取http的body時遇到的坑

當服務端對http的body進行解析到map string inte ce 時,會出現cli傳遞的是int型別,而服務端只能斷言成float64,而不能將接收到的本該是int型別的直接斷言為int 設定請求頭 注意,這裡斷言成int型別會出錯 c.request.body ioutil.nopclo...

golang讀取檔案

提前建乙個檔案文字helloworld.txt,現在可以在go程式中使用絕對檔案路徑將helloworld整個檔案讀取。中使用到 ioutol包中的 readfile函式。在go語言標準庫文件中它的用法是 func readfile filename string byte,error 說明 rea...

golang 讀取檔案

使用go語言讀取檔案的各種方式整理。整個檔案讀到記憶體,適用於檔案較小的情況 func readallintomemory filename string content byte,err error defer fp.close fileinfo,err fp.stat if err nil bu...