猿问

如何在 Go 中解码 base64 编码的 JSON

我有一个类型的地图map[string][]byte,现在的值[]byte是 base64 编码的。[]byte我想进一步使用其中的 JSON 编码。现在我这样做是为了解码 base64[]byte数组。


假设我secretInfo看起来像这样


apiVersion: v1

kind: Secret

metadata:

  namespace: kube-system

  name: my-credentials

data:

  secret_account.json: SGVsbG8sIHBsYXlncm91bmQ= // My base64 encoded data(not real/Actual data)

bytes, _ := b64.StdEncoding.DecodeString(string(secretInfo.Data["secret_account.json"])) // Converting data

var privateKeyJSON map[string]interface{}

err := json.Unmarshal(bytes, &privateKeyJSON)

if err != nil {

        r.Logger.Infof("Failed to parse secret %v", err)

    }

现在,我将 JSON 的值作为字符串传递给其他 JSON。


secretInfo.StringData["DecodedPrivateKeyJson"] = string(bytes)

它给我一个错误说,StringData.DecodedPrivateKeyJson 中的预期 JSON。


我错过了什么?


白衣非少年
浏览 154回答 2
2回答

慕盖茨4494581

我认为问题出在这一行:secretInfo.StringData["DecodedPrivateKeyJson"] = string(bytes)大概应该是这样的:secretInfo.StringData["DecodedPrivateKeyJson"] = string(privateKeyJSON)或者更好的事件:marshaledPrivateKeyJSON, _ := json.Marshal(privateKeyJSON)secretInfo.StringData["DecodedPrivateKeyJson"] = string(marshaledPrivateKeyJSON)

慕斯709654

您上面的代码中似乎存在一些问题您忽略了解码错误您尚未提供有关如何解析秘密信息的代码添加少量案例的示例代码,希望对您有所帮助:)包主import (    b64 "encoding/base64"    "encoding/json"    "fmt")func main() {    encodedJSONTestData := []string{        "ewoiZmlyc3RuYW1lIjoiSmhvbiIsCiJsYXN0bmFtZSI6ICJEb2UiCn0=",        "",        "!@#$%rtgfdjkmyhm",    }    for i, encodedJSON := range encodedJSONTestData {        fmt.Println("Case", i)        bytes, err := b64.StdEncoding.DecodeString(encodedJSON) // Converting data                if err!=nil{            fmt.Println("Failed to Decode secret", err)            continue        }                var privateKeyJSON map[string]interface{}        err = json.Unmarshal(bytes, &privateKeyJSON)        if err != nil {            fmt.Println("Failed to parse secret", err)            continue        }        fmt.Println("Success", privateKeyJSON)    }}
随时随地看视频慕课网APP

相关分类

Python
我要回答