json.Decode 不解码数字

json.Decode doesn't decode numbers

我基本上是从 documentation of the json package 复制粘贴这段代码。在提供的示例中,JSON 对象的值是字符串。在这里,我尝试使用整数。

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "log"
    "strings"
)

func main() {
    const jsonStream = `{"serverTime":35678}`

    type Message struct {
        serverTime int
    }
    
    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("its %v o clock\n", m.serverTime)
    }
}

m.ServerTime 现在应该是 35678,但是,它只是 0。我做错了什么?

document所述

The json package only accesses the exported fields of struct types (those that begin with an uppercase letter). Therefore only the the exported fields of a struct will be present in the JSON output.

因此将 serverTime 更改为 ServerTime,并添加 json 个标签 json:"serverTime"

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "log"
    "strings"
)

func main() {
    const jsonStream = `{"serverTime":35678}`

    type Message struct {
        ServerTime int `json:"serverTime"`
    }

    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("its %v o clock\n", m.ServerTime)
    }
}