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

标签 json string go base64

我有一张 map[string][]byte 类型的 map ,现在是 []byte 的值是base64编码的。
有一个 JSON 编码在其中 []byte我想进一步使用。现在我这样做是为了解码 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。
我错过了什么?

最佳答案

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

  • 您忽略了解码错误
  • 您还没有提供如何解析 secret 信息的代码

  • 添加少量案例的示例代码,希望对您有所帮助:)
    包主
    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)
        }
    }
    
    Go Playground
    Updated same code to use []Byte to provide more clarity

    关于json - 如何在 Go 中解码 base64 编码的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63593441/

    相关文章:

    javascript - 在 React Native 中存储静态和公共(public)数据

    json - 用于解析 JSONSchema 的 gsheet importjson 查询

    javascript - 从服务器获取 JSON 响应,但无法使用 Jquery 显示为 HTML

    c# - 如何将字符串解析为可为空的 int

    go - 如何对字符串中的字节排序?

    javascript - Dropbox + Chrome 扩展 Oauth 接收器

    java - 如何将 List<String> 与 String 进行比较?

    VB.NET:将包含 "Lastname, Firstname"的字符串转换为 "Firstname Lastname"

    go - 从 exec 命令 stdout 读取而不缓冲

    go - 在 slice 中搜索字符串时找不到句柄