Я хочу разобрать JSON, но один ключ - это либо строка, либо объект.
Вот моя текущая структура: https://github.com/PhillippOhlandt/pmtoapib/blob/master/CollectionItemRequest.go#L10
type CollectionItemRequest struct {
Url string `json:"url"`
Method string `json:"method"`
Header []RequestHeader `json:"header"`
Body RequestBody `json:"body"`
Description string `json:"description"`
}
Здесь атрибутом «Url» может быть не только строка, но и объект.
Я начал создавать для него собственную структуру, охватывающую случай объекта.
type CollectionItemRequestUrl struct {
Raw string `json:"raw"`
}
type CollectionItemRequest struct {
Url CollectionItemRequestUrl `json:"url"`
Method string `json:"method"`
Header []RequestHeader `json:"header"`
Body RequestBody `json:"body"`
Description string `json:"description"`
}
Но тогда строковая версия больше не будет работать. Есть ли способ, чтобы оба случая работали и получали значение через геттер, например request.Url.Get
?
РЕДАКТИРОВАТЬ:
Вот две версии JSON:
"request": {
"url": {
"raw": "http://localhost:8081/users?per_page=5&page=2",
"protocol": "http",
"host": [
"localhost"
],
"port": "8081",
"path": [
"users"
],
"query": [
{
"key": "per_page",
"value": "5",
"equals": true,
"description": ""
},
{
"key": "page",
"value": "2",
"equals": true,
"description": ""
}
],
"variable": []
},
А также
"request": {
"url": "http://localhost:8081/users/2",
Примечание. Только подмножества, весь JSON будет слишком длинным.
UnmarshalJSON
. - person Tulir   schedule 17.01.2018