亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何處理 Response JSON 有沒有鍵的自定義字段?

如何處理 Response JSON 有沒有鍵的自定義字段?

Go
鳳凰求蠱 2023-05-08 16:06:21
查詢 Api 并響應自定義 JSON,以及如何對其進行解組。示例 JSON:{"14AcKEr19gHJvgwQhK7sfFm6YJGmoZZoqu": {"final_balance": 61914248289,"n_tx": 3472,"total_received": 3479994002972}}密鑰是一個十六進制字符串。那么如何用 golang 公約處理它,任何人都可以幫助我嗎?下面是我的嘗試測試代碼:c.OnResponse(func(r *colly.Response) {    jsonData := r.Body    fmt.Println(string(jsonData))    fmt.Println("==================")    //parse bitcoin json    jsonMap := make(map[string]interface{})    err := json.Unmarshal([]byte(jsonData), &jsonMap)    if err != nil {        panic(err)    }    fmt.Println(jsonMap)    dumpMap("", jsonMap)})func dumpMap(space string, m map[string]interface{}) {    for k, v := range m {        if mv, ok := v.(map[string]interface{}); ok {            fmt.Printf("{ \"%v\": \n", k)            dumpMap(space+"\t", mv)            fmt.Printf("}\n")        } else {            fmt.Printf("%v %v : %v\n", space, k, v)        }    }}然后去運行cmd/main.go,控制臺打印在這里:{"14AcKEr19gHJvgwQhK7sfFm6YJGmoZZoqu": {    "final_balance": 75494521080,    "n_tx": 3493,    "total_received": 3493574275763}}==================map[14AcKEr19gHJvgwQhK7sfFm6YJGmoZZoqu:map[n_tx:3493 total_received:3.493574275763e+12 final_balance:7.549452108e+10]]{ "14AcKEr19gHJvgwQhK7sfFm6YJGmoZZoqu":         final_balance : 7.549452108e+10         n_tx : 3493         total_received : 3.493574275763e+12}我需要定制unmarshal func來獲取字符串鍵嗎?如果我用作14AcKEr19gHJvgwQhK7sfFm6YJGmoZZoqu密鑰,我將無法輕松訪問。我只是想知道如何處理它。
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

您可以將其解組到地圖中,這樣您就可以獲得生成的密鑰作為地圖的密鑰?

package main


import (

? ? "encoding/json"

? ? "fmt"

? ? "log"

)


var input = `{"14AcKEr19gHJvgwQhK7sfFm6YJGmoZZoqu": {

"final_balance": 61914248289,

"n_tx": 3472,

"total_received": 3479994002972

}}`


type object struct {

? ? FinalBalance uint64 `json:"final_balance"`

? ? NTX uint64 `json:"n_tx"`

? ? TotalReceived uint64 `json:"total_received"`

}


func main() {

? ? var result map[string]object;

? ? err := json.Unmarshal([]byte(input), &result);

? ? if err != nil {

? ? ? ? log.Fatal(err)

? ? }


? ? fmt.Printf("result: %+v", result)

? ? // result: map[14AcKEr19gHJvgwQhK7sfFm6YJGmoZZoqu:{FinalBalance:61914248289 NTX:3472 TotalReceived:3479994002972}]

}


查看完整回答
反對 回復 2023-05-08
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號