Если вы хотите это:
"user": {
"key": "johnsmith@test.com",
"email": "johnsmith@test.com",
"firstName": "john",
"lastName": "smith"
}
Объявите соответствующую Go struct:
type User struct {
Key string `json:"key"`
Email string `json:"email"`
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
}
Тогда, поскольку родительский объект пользователя выглядит следующим образом:
"items": [
{
"lastPing": "2020-04-30T02:56:10.430867577Z",
"environmentId": "xxxx",
"ownerId": "xxxx",
"user": { ... },
"_links": { ... }
}
]
вам также нужно объявить соответствующую Go структуру для этого (вы можете опустить поля, которые вам не нужны):
type Item struct {
User User `json:"user"`
}
и затем родительский элемент для родительского элемента:
{
"_links": {
"self": {
"href": "/api/v2/user-search/default/test?after=1585612800000&limit=20&offset=0&q=johnsmith%40test.com",
"type": "application/json"
}
},
"totalCount": 1,
"items": [ ... ]
}
и соответствующая Go структура для дедушки, опять же, включают только те поля, которые вам нужны:
type ResponseData struct {
Items []Item `json:"items"`
}
Получив это, вы можете декодировать json в экземпляр ResponseData
:
var rd ResponseData
if err := json.Unmarshal(data, &rd); err != nil {
panic(err)
}
for _, item := range rd.Items {
fmt.Println(item.User)
}
https://play.golang.com/p/7yavVSBcHQP