2 回答
TA貢獻1802條經驗 獲得超5個贊
有時您無法提前定義結構,但仍然需要數字不變地通過 marshal-unmarshal 過程。
在這種情況下,您可以使用UseNumberon 方法json.Decoder,這會導致所有數字解組為json.Number(這只是數字的原始字符串表示形式)。這對于在 JSON 中存儲非常大的整數也很有用。
例如:
package main
import (
"strings"
"encoding/json"
"fmt"
"log"
)
var data = `{
"id": 12423434,
"Name": "Fernando"
}`
func main() {
d := json.NewDecoder(strings.NewReader(data))
d.UseNumber()
var x interface{}
if err := d.Decode(&x); err != nil {
log.Fatal(err)
}
fmt.Printf("decoded to %#v\n", x)
result, err := json.Marshal(x)
if err != nil {
log.Fatal(err)
}
fmt.Printf("encoded to %s\n", result)
}
結果:
decoded to map[string]interface {}{"id":"12423434", "Name":"Fernando"}
encoded to {"Name":"Fernando","id":12423434}
- 2 回答
- 0 關注
- 299 瀏覽
添加回答
舉報
