json - 使用 simplejson 转 JSON

标签 json go

尝试使用来自“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 )

但它似乎确实有效!? 尝试访问总计和标记字段

最佳答案

你有几个错误:

  1. 如果您检查 JSON 响应,您会注意到 total 字段不是字符串,这就是为什么您应该使用 MustInt() 方法,而不是 String(),访问字段时。
  2. 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/

相关文章:

java - 使用 Jackson 自定义 JSON 反序列化

javascript - 未定义元素从 URL 获取 JSON

asp.net - JSON 可以调用 .aspx 文件中的方法,但不能调用 .asmx(ASP.NET Web 服务)文件中的方法

php - json转mysql。我如何将 json 对象转换为 sql 查询?

go - OAuth token 已过期且未设置刷新 token

go - 发送带有标题文本的二进制数据

go - 在 Golang 中将 int 数组转换为字节数组

javascript - 当循环内所有条件均为 false 时如何调用函数

go - 无法解释为什么 "55"被转换为 "7"

go - init 内部分配的值不维护该值