Use nested structs in Go to match the nested structure in JSON.
Here's one example of how to handle your example JSON:
package main
import (
    "encoding/json"
    "fmt"
    "log"
)
func main() {
    jStr := `
    {
        "AAA": {
            "assdfdff": ["asdf"],
            "fdsfa": ["1231", "123"]
        }
    }
    `
    type Inner struct {
        Key2 []string `json:"assdfdff"`
        Key3 []string `json:"fdsfa"`
    }
    type Container struct {
        Key Inner `json:"AAA"`
    }
    var cont Container
    if err := json.Unmarshal([]byte(jStr), &cont); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%+v\n", cont)
}
playground link
You can also use an anonymous type for the inner struct:
type Container struct {
    Key struct {
        Key2 []string `json:"assdfdff"`
        Key3 []string `json:"fdsfa"`
    }  `json:"AAA"`
}
playground link
or both the outer and inner structs:
var cont struct {
    Key struct {
        Key2 []string `json:"assdfdff"`
        Key3 []string `json:"fdsfa"`
    } `json:"AAA"`
}
playground link
If you don't know the field names in the inner structure, then use a map:
type Container struct {
    Key map[string][]string `json:"AAA"`
}
http://play.golang.org/p/gwugHlCPLK
There are more options. Hopefully this gets you on the right track.