跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教:远程 Get 到复杂 JSON 极少修改之后传给前端用,怎么做最快捷高效?
未分類
13 1 月 2021

请教:远程 Get 到复杂 JSON 极少修改之后传给前端用,怎么做最快捷高效?

请教:远程 Get 到复杂 JSON 极少修改之后传给前端用,怎么做最快捷高效?

資深大佬 : dimlau 0

func GetWM(w http.ResponseWriter, r *http.Request) {  //一写代码 //省略掉了 //var TOTID //r.Method == "GET"   w.Header().Set("Content-Type", "application/json")  resp, err := http.Get("///xxxxx.json")  if err != nil {   panic(err)  }  defer resp.Body.Close()  body, _ :=ioutil.ReadAll(resp.Body)  addthis := fmt.Sprintf(`{"id":"%s",`,TOTID)  body = append([]byte(addthis),body[1:]...)  b=string(body)  fmt.Fprint(w, b) } 

这样写是不是很丑?

大佬有話說 (16)

  • 資深大佬 : pabupa

    302 ?

  • 資深大佬 : fx

    不用 Golang 最快

  • 資深大佬 : Cuo

    不能直接从前段请求吗?

  • 資深大佬 : tcsky

    丑没关系, 好用啊.
    有个 sjson 库可以直接改 json 字符串.

  • 主 資深大佬 : dimlau

    @Cuo
    @fx
    @pabupa

    json 地址里有 md5,而且新加的内容也是 go 从数据库里取出来的……
    所以,如果要是前端做的话,得两次 fetch 。

    请问,各位意思是说,即便这样也比上边那样处理得快吗?

  • 主 資深大佬 : dimlau

    @tcsky 好嘞,我也去找找看

  • 資深大佬 : neoblackcap

    @dimlau 是不是示例代码漏了一些?我好像没看到有”}”插入进去
    按我的理解,如果仅仅是字符串拼接,不涉及到序列化与反序列化,各种库底层修改的逻辑应该大同小异。最多可能会比你这个高效那么一点,区别应该不大。仅仅是 API 封装了,可能好看一点罢了。
    有的封装还有可能有额外的开销。看你的选择

  • 資深大佬 : jay777

    sjson gjson

  • 資深大佬 : jinliming2

    不要 ioutil.ReadAll,你这个只是把 resp.Body 第一个字节去掉的话,这样写:
    resp, err := http.Get(“///xxxxx.json”)
    if err != nil {
    panic(err)
    }
    defer resp.Body.Close()
    fmt.Fprintf(w, `{“id”:”%s”,`, TOTID) // 格式化直接写出
    io.CopyN(ioutil.Discard, resp.Body, 1) // 丢弃第一个字节
    io.Copy(w, resp.Body) // 写出剩余数据

  • 資深大佬 : jinliming2

    @neoblackcap 他 http response 里应该是一个完整的 JSON,{…..},下面他把第一个 { 去掉拼上了前面的那一段,} 是原来的 JSON 里就有的

  • 資深大佬 : neoblackcap

    @jinliming2 哦,你不说我都没搞懂,的确是这样

  • 資深大佬 : treblex

    如果是 json 的话 写个 struct 绑定 或者绑定 map[string]interface{},然后在修改会方便点吧,
    直接拼字符串是因为有性能要求吗

  • 資深大佬 : hongweiliuruige

    确实丑啊,,

  • 資深大佬 : qq1340691923

    这种操作就不该 go 来处理,node 做中间层不香吗

  • 主 資深大佬 : dimlau

    @jinliming2 请问,#9 这样依然还是野路子吗?
    是不是一般不会这样处理?

    因为感觉如 @suke971219 所说写 struct 有点繁琐,用到的数据在 json 的不同层级,struct 要写好几层?
    不如在前端用 js 取想要的就完了。

  • 資深大佬 : jinliming2

    @dimlau 具体情况具体对待。你这个需求里面,resp.Body 完全没用,所以直接流转发就行,效率更高,不需要全读到内存里处理。
    而其他的 xxjson 啦,struct 绑定啦之类的,都是要把整个 json 读到内存里,解析,然后修改,然后序列化,再写出,这个效率就很低了,对你这个需求来说就没有必要了。除非你需要对 resp.Body 做一些额外的处理。
    当然,如果你的 jdon 很小的话,不在乎这点性能,而这样写又不够美观可读的话,那上的那些其他的方案也完全可以采用。
    我觉得你这种简单的函数,只要写好注释,基本上没啥问题的。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具