簡體   English   中英

JSON 解組 Go 中的有符號整數數組

[英]JSON unmarshal array of signed integers in Go

我正在嘗試將 JSON 從整數數組解組為 Go 中的字節片。

問題是我們只能在 JSON 中的數組包含正整數時執行此操作,因為它將在 Go 中被識別為 uint8。 當數組包含負整數時它不起作用。

例如:

  • 這個數組可以工作:[1, 2, 3, 4, 5]
  • 這個數組不起作用:[-14, 2, 3, 4, 5](-14 是負數)

這是我收到的錯誤消息

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM