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

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

取消具有未知字段名稱但已知結構的 JSON

取消具有未知字段名稱但已知結構的 JSON

Go
哈士奇WWW 2022-09-05 17:36:38
我從traefik tls中檢索acme.json,其中traefik存儲ssl / tls證書信息?,F在我想用golang將acme.json解組到我的go結構“Traefik”中。但是我不知道如何處理動態/未知的json字段名稱,因為和是我在編譯時不知道的名稱。這些名稱應在 go 中動態配置。certificateresolver1certificateresolver2我知道json的結構(它總是一樣的),但不知道證書解析器的字段名稱。有誰知道做到這一點的最佳方法嗎?Traefik acme.json{  "certificateresolver1": {    "Account": {      "Email": "[email protected]",      "Registration": {        "body": {          "status": "valid",          "contact": [            "mailto:[email protected]"          ]        },        "uri": "https://acme-v02.api.letsencrypt.org/acme/acct/124448363"      },      "PrivateKey": "PRIVATEKEY",      "KeyType": "4096"    },    "Certificates": [      {        "domain": {          "main": "example.com",          "sans": [            "test.example.com"          ]        },        "certificate": "CERTIFICATE",        "key": "KEY",        "Store": "default"      },      {        "domain": {          "main": "example.org"        },        "certificate": "CERTIFICATE",        "key": "KEY",        "Store": "default"      }    ]  },  "certificateresolver2": {    "Account": {      "Email": "[email protected]",      "Registration": {        "body": {          "status": "valid",          "contact": [            "mailto:[email protected]"          ]        },        "uri": "https://acme-v02.api.letsencrypt.org/acme/acct/126945414"      },      "PrivateKey": "PRIVATEKEY",      "KeyType": "4096"    },    "Certificates": [      {        "domain": {          "main": "example.net"        },        "certificate": "CERTIFICATE",        "key": "KEY",        "Store": "default"      }    ]  }}
查看完整描述

1 回答

?
繁星coding

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

我認為這樣的事情會對你有所幫助:


type ProviderMdl map[string]Provider


type Provider struct {

    Account struct {

        Email        string `json:"Email"`

        Registration struct {

            Body struct {

                Status  string   `json:"status"`

                Contact []string `json:"contact"`

            } `json:"body"`

            URI string `json:"uri"`

        } `json:"Registration"`

        PrivateKey string `json:"PrivateKey"`

        KeyType    string `json:"KeyType"`

    } `json:"Account"`

    Certificates []struct {

        Domain struct {

            Main string   `json:"main"`

            Sans []string `json:"sans"`

        } `json:"domain"`

        Certificate string `json:"certificate"`

        Key         string `json:"key"`

        Store       string `json:"Store"`

    } `json:"Certificates"`

}

因此,您可以通過以下方式處理此數據:


    bres := new(ProviderMdl)

    if err := json.Unmarshal(data, bres); err != nil {

        panic(err)

    }

    

    // fmt.Printf("%+v - \n", bres)


    for key, value := range *bres {

        fmt.Printf("%v - %v\n", key, value)

    }


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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