Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

convert output string to map with golang

Tags:

go

Get the output as

 {
   ARN: "arn:aws:secretsmanager:us-east-2:xxxx:secret:team_dev-Xhzkt6",
   CreatedDate: 2018-07-05 06:50:07 +0000 UTC,
   Name: "team_dev",
   SecretString: "{\"password\":\"test\"}",
   VersionId: "6b65bfe4-7908-474b-9ae6-xxxx",
   VersionStages: ["AWSCURRENT"]
 }

Try to get the value as map with the key SecretString

d.Set("secret_string", output.SecretString)

How can I get it as Schema TypeMap?

With jq, I can easily get it, but not sure how to do this in golang.

Updates

Thanks, @mkopriva

in the aws sdk (github.com/aws/aws-sdk-go/service/secretsmanager/api.go), output (GetSecretValueOutput) is defined as type:"structure"

type GetSecretValueOutput struct {
        _ struct{} `type:"structure"`

And thanks again to provide a test code, I will try it.

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    secretString := "{\"password\":\"test\"}"

    sec := map[string]interface{}{}
    if err := json.Unmarshal([]byte(secretString), &sec); err != nil {
        panic(err)
    }
    fmt.Println(sec)
}

Golang Playground Try Here

like image 347
Bill Avatar asked Jul 05 '18 11:07

Bill


People also ask

How to convert string to map in golang?

To convert JSON String to Map object in Go language, import the package encode/json, call json. Unmarshall() function and pass the JSON String as byte array, and address of an empty map as arguments to the function. The function transforms the JSON string to map, and loads the result at given map address.

Will map function work on string?

Map() function can also be used to remove the spaces between the words of a string.

How does map work in Golang?

Golang Maps is a collection of unordered pairs of key-value. It is widely used because it provides fast lookups and values that can retrieve, update or delete with the help of keys. It is a reference to a hash table.


1 Answers

@mkopriva

Thanks, please answer this question, so I can vote and accept it.

With your sample code, I did fix the issue.

-       d.Set("secret_string", output.SecretString)
+       var sec map[string]interface{}
+       if err = json.Unmarshal([]byte(*output.SecretString), &sec); err != nil {
+               return err
+       }
+       d.Set("secret_string", sec)
like image 56
Bill Avatar answered Nov 13 '22 01:11

Bill