如何解组json

I am using http.Get in go to a url which results in the following {"name":"cassandra","tags":["2.2.6","latest"]} that means it behaves like map[string]string for the name field but in the tags it behaves like map[string][]string so how can I unmarshal this in Go? I tried using map[string][]string but it did not work

map_image_tags := make(map[string][]string)    
res2, err := http.Get(fmt.Sprintf("%s/v2/%s/tags/lists", sconf.RegistryConf.url, Images[i]))
        if err != nil {
            w.WriteHeader(500)
            log.Errorf("could not get tags: %s", err)
            return
        }
        log.Debugf("OK")
        js2, err := ioutil.ReadAll(res2.Body)
        if err != nil {
            w.WriteHeader(500)
            log.Errorf("could not read body: %s", err)
            return
        }
        log.Debugf("OK")
        err = json.Unmarshal(js2, map_image_tags)
        if err != nil {
            w.WriteHeader(500)
            log.Errorf("could not unmarshal json: %s", err)
            return
        }

I am getting this log error: could not unmarshal json: invalid character 'p' after top-level value

If the structure of json data is dynamic you can unmarshal tags into map[string]interface{}:

var encodedTags map[string]interface{}
result := json.Unmarshal([]byte(image_tags), &encodedTags)

Then you can use type assertion to unmarshal the content of tags:

var tags []interface{}
result = json.Unmarshal([]byte(encodedTags["tags"].(string)), &tags)

And here is a full working example on Go Playground.

To read a json value like {"name":"cassandra", "tags":["2.2.6","latest"], you can use a struct defined as:

type mapImageTags struct {
    Name string `json:"name"`
    Tags []string `json:"tags"` // tags is a slice (array) of strings
}

To unmarshal JSON data,

m := mapImageTags{}
err = json.Unmarshal(js2, &m)

A simple map[string]string wont help in this case.

Try map[string]interface{}, note that this method forces any numbers to float and in general not recommended when your json is complex. abhink's answer is the recommended way.