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)
}
}
我基本上是从 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)
}
}