尝试使用来自“github.com/bitly/go-simplejson”的 JSON 库
url = "http://api.stackoverflow.com/1.1/tags?pagesize=100&page=1"
res, err := http.Get(url)
body, err := ioutil.ReadAll(res.Body)
fmt.Printf("%s\n", string(body)) //WORKS
js, err := simplejson.NewJson(body)
total,_ := js.Get("total").String()
fmt.Printf("Total:%s"+total )
但它似乎确实有效!? 尝试访问总计和标记字段
最佳答案
你有几个错误:
- 如果您检查 JSON 响应,您会注意到
total
字段不是字符串,这就是为什么您应该使用MustInt()
方法,而不是String()
,访问字段时。 Printf()
方法调用完全错误。您应该传递一个"template",然后传递适合“占位符”数量的参数。
顺便说一句,我强烈建议您到处检查 err != nil
,这会对您有很大帮助。
这是工作示例:
package main
import (
"fmt"
"github.com/bitly/go-simplejson"
"io/ioutil"
"log"
"net/http"
)
func main() {
url := "http://api.stackoverflow.com/1.1/tags?pagesize=100&page=1"
res, err := http.Get(url)
if err != nil {
log.Fatalln(err)
}
body, err := ioutil.ReadAll(res.Body)
if err != nil {
log.Fatalln(err)
}
// fmt.Printf("%s\n", string(body))
js, err := simplejson.NewJson(body)
if err != nil {
log.Fatalln(err)
}
total := js.Get("total").MustInt()
if err != nil {
log.Fatalln(err)
}
fmt.Printf("Total:%s", total)
}
关于json - 使用 simplejson 转 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21432848/