douxian7117 2016-11-26 02:24
浏览 75
已采纳

以JSON结构解组数组

Stackoverflow:

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", 
  "targets": 
     [ { "id": "00u34k73otQGIAFUALPR", "displayName": "okta admin", "login":       "oktaadmin@okta.com", "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 appreciative.

https://play.golang.org/p/TVYeYe7e_I

  • 写回答

3条回答 默认 最新

  • dongwu9972 2016-11-26 02:54
    关注

    For big json documents I recommend you to use this tool: https://mholt.github.io/json-to-go/

    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: https://play.golang.org/p/Q8PwwtS_QZ

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?