为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2022-06-27 11:19:30
我有一个类型的地图map[string][]byte,现在的值[]byte是 base64 编码的。[]byte我想进一步使用其中的 JSON 编码。现在我这样做是为了解码 base64[]byte数组。假设我secretInfo看起来像这样apiVersion: v1kind: Secretmetadata:  namespace: kube-system  name: my-credentialsdata:  secret_account.json: SGVsbG8sIHBsYXlncm91bmQ= // My base64 encoded data(not real/Actual data)bytes, _ := b64.StdEncoding.DecodeString(string(secretInfo.Data["secret_account.json"])) // Converting datavar 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。我错过了什么?
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

我认为问题出在这一行:


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

大概应该是这样的:


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

或者更好的事件:


marshaledPrivateKeyJSON, _ := json.Marshal(privateKeyJSON)

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


查看完整回答
反对 回复 2022-06-27
?
慕斯709654

TA贡献1840条经验 获得超5个赞

您上面的代码中似乎存在一些问题

  1. 您忽略了解码错误

  2. 您尚未提供有关如何解析秘密信息的代码

添加少量案例的示例代码,希望对您有所帮助:)

包主

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)

    }

}


查看完整回答
反对 回复 2022-06-27
  • 2 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号