欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

gojson數(shù)據(jù)轉(zhuǎn)發(fā)的實(shí)現(xiàn)代碼

案例

成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元松原做網(wǎng)站,已為上家服務(wù),為松原各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

例如,有個(gè) GET 接口,可以批量獲取用戶信息👇

> curl 'http://localhost:8080/user/1,2,3'
[
  {
    "user_id":1,
    "other_suff":...
  },
  {
    "user_id":2,
    "other_suff":...
  },
  {
    "user_id":3,
    "other_suff":...
  }
]

同時(shí),我們要將用戶信息和他們的某些訂單信息放在一起,組裝成為👇的接口,滿足其他業(yè)務(wù)需求。

[
  {
    "user_info":{
      "user_id":1,
      "other_suff":...
    },
    "order_info":{
      "order_id":1,
      "user_id":1,
      "other_suff":...
    }
  },
  {
    "user_info":{
      "user_id":2,
      "other_suff":...
    },
    "order_info":{
      "order_id":2,
      "user_id":2,
      "other_suff":...
    }
  },
  {
    "user_info":{
      "user_id":3,
      "other_suff":...
    },
    "order_info":{
      "order_id":3,
      "user_id":3,
      "other_suff":...
    }
  }
]

分析

解決這個(gè)問題很簡單:把user信息和order信息的json用工具解析得到結(jié)構(gòu)體,然后調(diào)用他們的接口得到數(shù)據(jù),根據(jù)id關(guān)聯(lián)和拼裝,最后返回。

這樣的做法存在的一個(gè)問題是,代碼解析了user和order的完整結(jié)構(gòu)。如果user接口返回的用戶信息增加了字段,我們這里的結(jié)構(gòu)體要同步更新,否則我們給出的數(shù)據(jù)就是不完整的。(這可能是很痛苦的,你要求別的團(tuán)隊(duì)加字段,得排期...)

其實(shí)我們作為數(shù)據(jù)的“中間商”,只關(guān)心user接口json里的 user_id ,我們使用這個(gè)字段關(guān)聯(lián)order數(shù)據(jù)。對(duì)于user信息里的 other_suff 或者其他數(shù)據(jù),我們并不關(guān)心,只要保證完整傳出去就好了。

根據(jù) https://golang.org/pkg/encoding/json/#Unmarshal ,可以知道直接丟一個(gè) map[string]interface{} 給 json.Unmarshal 也可以正常解析的,于是我們可以寫出比較通用的透?jìng)鞔a。

type Content []map[string]interface{}

func (c Content) GetByFieldName(name string, defaultVal interface{}) infterface{} {
  for _, item := range c {
    val, ok := item[name]
    if !ok {
      continue
    }
    if val == nil {
      return defaultVal
    }
    return val
  }
  return defaultVal
}

func getUserContentByIDs(ids []int) Content {
  ...
  var c Content
  err := json.Unmarshal(jsonData, &c) 
  ...
  return c
}

func getOrderContentByUserIDs(ids []int) Content {.../*同上*/}

func Handler(userIDs []int) []Combine {

  users := getUserContentByIDs(userIDs)
  orders := getOrderContentByUserIDs(userIDs)

  // 這里假設(shè)用戶和訂單是一對(duì)一的關(guān)系
  ret := make([]Combine, 0, len(users))
  for _, u := range users {
    for _, o := range orders {
      userID := u.GetByFieldName("user_id", 0) 
      orderUserID := o.GetByFieldName("user_id", 0)
      if userID != 0 && userID == orderUserID {
        ret = append(ret, Combine{
          UserInfo: u,
          OrderInfo: o,
        })
        break
      }
    }
  }
  return ret
}

P.S. 在上面的例子中,每次查詢Content都要遍歷數(shù)組。如果數(shù)據(jù)量大或者查詢頻繁,可以在初始化Content的時(shí)候,根據(jù)item的唯一標(biāo)標(biāo)識(shí),再給Content根據(jù)封裝一個(gè)map,提高查詢效率。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

本文名稱:gojson數(shù)據(jù)轉(zhuǎn)發(fā)的實(shí)現(xiàn)代碼
網(wǎng)站路徑:http://aaarwkj.com/article4/pjsdoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站設(shè)計(jì)、Google、手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
国产一区在线视频无卡顿| 国产交换精品一区二区三区| 午夜高清影院免费观看| 激情av一区二区不卡| 少妇精品久久久一区二区三区| 天堂av在线免费观看| 日韩欧美黄色三级视频| 国产国产精品人在线观看| 中文字幕国产精品综合一区| 88国产精品久久久久久| 亚洲欧美精品一中文字幕| 国产传媒视频在线免费观看| 中文字幕在线看精品乱码| 蜜桃精品国产一区二区三区| 精品国产自在久久成人| 91手机国产三级在线| 国产亚洲精品女人久久久| 操你啦夜夜操狠狠躁天天爽| 高清国产在线播放91| av熟女一区二区三区| 欧美熟妇在线视频你懂的| 日韩欧美一二区久久麻豆| 人妻一本久道久久综合鬼色| 大片天天看菲色亚洲黄色| 日本在线精品在线观看| 亚洲一区二区日韩人妻| 一本久久综合亚洲鲁鲁五月天| 日日淫夜夜操熟女视频| 亚洲欧美日韩精品麻豆| 青青草原精品视频在线| 国产精品日韩伦理一区二区| 久久熟妇少妇亚洲精品| 日韩成人精品一区欧美成人| 欧美日韩性生活视频在线| 日本韩国三级视频在线观看| 亚洲精品成人一区二区| 中国女人内射69xx| 午夜福利中文在线观看| 91国产香蕉在线观看| 欧美亚洲另类色自拍偷拍| 国产极品美女高潮抽搐|