[英]JSON unmarshal array of signed integers in Go
我正在嘗試將 JSON 從整數數組解組為 Go 中的字節片。
問題是我們只能在 JSON 中的數組包含正整數時執行此操作,因為它將在 Go 中被識別為 uint8。 當數組包含負整數時它不起作用。
例如:
這是我收到的錯誤消息
Cannot unmarshal config file; err= json: cannot unmarshal number -14 int to Go struct field <struct_field> of type uint8
有什么辦法可以將 JSON 將負整數解組為 Go 中的字節片嗎?
有什么辦法可以將 JSON 將負整數解組為 Go 中的字節片嗎?
不,因為負數超出了字節值的有效范圍,就像任何大於 255 的數字一樣。
謝謝大家的回答。
我找到了解決方案:由於我想要一個字節數組並且字節不能保存有符號整數,我可以做的是首先在 JSON 離線輸入中將有符號整數轉換為無符號整數,然后我可以對新的無符號數組進行 JSON 解組。
游樂場鏈接: https://play.golang.org/p/Th2DC9AGEEs
參考代碼:
package main
import (
"fmt"
)
func main() {
arr := []int8{-14,1,2,3,4}
var bytes []byte
for _, val := range arr {
bytes = append(bytes, convertToByte(val))
}
fmt.Println(bytes) // will print [242 1 2 3 4]
}
func convertToByte(value int8) byte {
return byte(value)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.