user3888307 user3888307 - 1 year ago 106
JSON Question

Unmarshalling arrays in JSON structure


I've been struggling to unmarshal what I wouldn't consider an especially complex
JSON response in GO. (which I'm fairly new to). Example below:

{ "eventId": "tevtNKIsHrFQTyyMeYDMc5jgQ1459184873000",
"sessionId": "1016Q-vnpnlQwCiLiyH7e_cNg",
[ { "id": "00u34k73otQGIAFUALPR", "displayName": "okta admin", "login": "", "objectType": "User" } ] }

I tried representing this as an array of structs, but it never seems to connect.

I put my code on the GO Lang playground, if anyone can take a look I'd be very

Answer Source

For big json documents I recommend you to use this tool:

You will get something like:

type AutoGenerated struct {
    EventID   string    `json:"eventId"`
    SessionID string    `json:"sessionId"`
    RequestID string    `json:"requestId"`
    Published time.Time `json:"published"`
    Action    struct {
        Message    string   `json:"message"`
        Categories []string `json:"categories"`
        ObjectType string   `json:"objectType"`
        RequestURI string   `json:"requestUri"`
    } `json:"action"`
    Actors []struct {
        ID          string `json:"id"`
        DisplayName string `json:"displayName"`
        Login       string `json:"login,omitempty"`
        ObjectType  string `json:"objectType"`
        IPAddress   string `json:"ipAddress,omitempty"`
    } `json:"actors"`
    Targets []struct {
        ID          string `json:"id"`
        DisplayName string `json:"displayName"`
        Login       string `json:"login"`
        ObjectType  string `json:"objectType"`
    } `json:"targets"`

Full example:

Also you can always start with a map[string]interface{} instead of a struct.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download