登录
首页 >  Golang >  Go问答

修改数据为JSON格式

来源:stackoverflow

时间:2024-02-20 21:27:14 332浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《修改数据为JSON格式》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我正在使用 golanggithub api 获取数据,但是,我只想向前端发送必要的数据(idnameurllanguagedescription ) 而不是只返回 github api 提供的所有内容我。

func GetAllReposStars(w http.ResponseWriter, r *http.Request) {
    enableCors(&w)
    params := mux.Vars(r)
    username := params["username"]

    res, err := http.Get("https://api.github.com/users/" + username + "/starred")

    body, err := ioutil.ReadAll(res.Body)
    res.Body.Close()
    if err != nil {
        log.Fatal(err)
    }

    log.Printf("Body: %s\n", body)

    if err != nil {
        log.Fatal(err)
    }

    w.Header().Set("Content-Type", "application/json")
    w.Write(body)
    json.NewEncoder(w)
}

解决方案


您可以定义一个仅包含您需要的键的类型,并将来自 github api 的响应解码为该类型的变量,以便仅保留您需要的键,然后将该变量写入响应。

例如:

package main

import (
    "encoding/json"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

type RelevantRepoData struct {
    Id          int    `json:"id"`
    Name        string `json:"name"`
    Url         string `json:"url"`
    Language    string `json:"language"`
    Description string `json:"description"`
}

func GetAllReposStars(w http.ResponseWriter, r *http.Request) {
    enableCors(&w)
    params := mux.Vars(r)
    username := params["username"]

    res, err := http.Get("https://api.github.com/users/" + username + "/starred")

    var repoData RelevantRepoData
    err = json.NewDecoder(res.Body).Decode(&repoData)
    if err != nil {
        log.Fatal(err)
    }

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(repoData)
}

到这里,我们也就讲完了《修改数据为JSON格式》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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