我想output從此函式回傳以下 json 回應,因此我可以在另一個函式中使用該回傳值。但在 for 回圈中我無法做到這一點,是否有任何解決方案。
func Search_num(mobilenumber string) {
//.......get request.......
body, err := io.ReadAll(search_res.Body)
if err != nil {
log.Fatalln(err)
}
defer search_res.Body.Close()
var jsonbody Response
if err := json.Unmarshal(body, &jsonbody); err != nil {
log.Fatalln(err)
}
for _, p := range jsonbody.Data {
output := fmt.Sprintf("Name : %s\nMobile : %s\nEmail : %s\nCarrier : %s\nCity : %s\n", p.Name, p.Phone.Mobile, p.INTaddress.Email, p.Phone.Carrier, p.Address.City)
}
return output
}
看到了一些解決方案,但不明白如何fmt.Sprintf("Name : %s\nMobile : %s\nEmail : %s\nCarrier : %s\nCity : %s\n", p.Name, p.Phone.Mobile, p.INTaddress.Email, p.Phone.Carrier, p.Address.City)在切片中分配以下 json :|
uj5u.com熱心網友回復:
像這樣,輸出不使用 := 在 for 范圍內,只使用 = 。 for 回圈認為不需要,只是你要求使用 jsonbody.Data[0] 或 jsonbody.Data[len(jsonbody.Data)-1]
func Search_num(手機號碼字串){
//.......get request.......
body, err := io.ReadAll(search_res.Body)
if err != nil {
log.Fatalln(err)
}
defer search_res.Body.Close()
var jsonbody Response
if err := json.Unmarshal(body, &jsonbody); err != nil {
log.Fatalln(err)
}
var output string
for _, p := range jsonbody.Data {
output = fmt.Sprintf("Name : %s\nMobile : %s\nEmail : %s\nCarrier : %s\nCity : %s\n", p.Name, p.Phone.Mobile, p.INTaddress.Email, p.Phone.Carrier, p.Address.City)
}
return output
}
uj5u.com熱心網友回復:
如果我正確理解了這個,那么你就有一個格式為 json 的:
[
{"name" : "name1", "mobile": "123", "email": "[email protected]", "carrier": "carrier1", "city", "city1"},
{"name" : "name2", "mobile": "1234", "email": "[email protected]", "carrier": "carrier2", "city", "city2"}
...
]
您想搜索,找到數字(例如 1234)并回傳使用您的格式化的整個結構Sprintf
如果您的 Response 結構是這樣的:
type Response struct {
Name string
Mobile string
Email string
Carrier string
City string
}
然后,您需要將其中的一部分提供給 Unmarshaler 以將它們取回。喜歡:
func Search_num(mobilenumber string) string {
//.......get request.......
body, err := io.ReadAll(search_res.Body)
if err != nil {
log.Fatalln(err)
}
defer search_res.Body.Close()
var responses []Response
if err := json.Unmarshal(body, &responses); err != nil {
log.Fatalln(err)
}
for _, p := range responses {
if p.Mobile == mobilenumber {
return fmt.Sprintf("Name : %s\nMobile : %s\nEmail : %s\nCarrier : %s\nCity : %s\n", p.Name, p.Mobile, p.Email, p.Carrier, p.City)
}
}
return mobilenumber " not found"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511995.html
標籤:jsonapi去
上一篇:SQL陳述句優化的30種方法
