为了账号安全,请及时绑定邮箱和手机立即绑定

如何修改返回的json

如何修改返回的json

Go
温温酱 2022-05-23 15:13:57
我从github APIwith获取数据golang,但是,我只想将必要的数据(id、name、和)发送到前面url,而不是只返回给我的所有内容。languagedescriptiongithub APIfunc 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)}
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

您可以定义一个只有您需要的键的类型,并将来自 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)

}


查看完整回答
反对 回复 2022-05-23
?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果您想将一些特定字段发送到前端但将来想在后端处理它们,您可以json:"-"在您的结构中使用


例如:


type RelevantRepoData struct {

    Irrelevant  string `json:"-"`

    Id          int    `json:"id"`

    Name        string `json:"name"`

    Url         string `json:"url"`

    Language    string `json:"language"`

    Description string `json:"description"`

}

当您返回此对象时,带有的字段json:"-"将被忽略,但您仍然可以在后端使用它们。


查看完整回答
反对 回复 2022-05-23
  • 2 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号