登录
首页 >  Golang >  Go问答

如何解析这种类型的 json 响应以提取数据?

来源:stackoverflow

时间:2024-02-15 17:42:24 349浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《如何解析这种类型的 json 响应以提取数据?》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

在解析 get 请求后,如何获取“personaname”和“realname”值?我使用这个结构的方式

type response struct {
    personaname string
    realname string
}

和这段代码

sb := string(res.body())
var response []response
json.unmarshal([]byte(sb), &response)

没有给我任何东西。有小费吗?我不太熟悉 json 以及这种 json 的工作原理。 (下面是响应json)

{
  "response": {
    "players": [
      {
        "personaname": "alfred",
        "realname": "alfred d"
      },
      {
        "personaname": "EJ",
        "realname": "Erik Johnson"
      }
    ]
  }
}

正确答案


您需要定义一个与 json 部分或完全匹配但从根开始匹配的完整结构。

https://play.golang.org/p/I8fUhN4_NDa

package main

import (
    "encoding/json"
    "fmt"
)

type Body struct {
    Response struct {
        Players []Player
    }
}

type Player struct {
    PersonaName string
    Realname    string
}

func main() {

    body := []byte(`{
          "response": {
            "players": [
              {
                "personaname": "alfred",
                "realname": "alfred d"
              },
              {
                "personaname": "EJ",
                "realname": "Erik Johnson"
              }
            ]
          }
        }`)

    var parsed Body
    if err := json.Unmarshal(boddy, &parsed); err != nil {
        panic(err)
    }

    fmt.Printf("%+v", parsed.Response.Players)

}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>