Все сервисы Хабра
Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Закрыть
Задать вопрос
dubrovinn
0
вклад
1
вопрос
1
ответ
0%
решений
Комментарии
Информация
Ответы
Вопросы
Комментарии
Подписки
Нравится
Как я могу создать структуру для json объекта и получить отдельные значения в golang?
dubrovinn
@dubrovinn
Автор вопроса
Здоворо!!!
Спасибо!!! Все получилось!
type Order struct {
Ask struct {
Amount float64 `json:"amount"`
Assets []struct {
Assetref string `json:"assetref"`
Name string `json:"name"`
Qty float64 `json:"qty"`
} `json:"assets"`
} `json:"ask"`
Cancomplete bool `json:"cancomplete"`
Candisable bool `json:"candisable"`
Complete bool `json:"complete"`
Offer struct {
Amount float64 `json:"amount"`
Assets []struct {
Assetref string `json:"assetref"`
Name string `json:"name"`
Qty float64 `json:"qty"`
} `json:"assets"`
} `json:"offer"`
Requiredfee float64 `json:"requiredfee"`
}
Написано
более трёх лет назад
Как я могу создать структуру для json объекта и получить отдельные значения в golang?
dubrovinn
@dubrovinn
Автор вопроса
Я сейчас попробовал такую структуру:
type Order struct {
Ask
Cancomplete bool
Candisable bool
Complete bool
Offer
Requiredfee float64
}
type Ask struct {
Ammount float64
Assets
}
type Offer struct {
Ammount float64
Assets
}
type Assets struct {
Assetref string
Name string
Qty float64
}
ВОт функция которая принимает base64 строку, отправляет ее в jsonrpc сервис, переводит ответ в структуру в переменную d:
func DecodeOrder(datahex string) (*Order){
var d *Order
err := rpcClient.CallFor(&d, "decoderawexchange", datahex)
if err != nil || d == nil {
panic(err)
}
fmt.Print(d)
return d
}
после этого я хочу выбрать нужные мне данные из объекта в новую переменную и опять перевожу объект в json:
func CompleteOrder(w http.ResponseWriter, r *http.Request) {
queryValues := r.URL.Query()
var datahex= queryValues.Get("exchange_data")
p := DecodeOrder(datahex)
rp, err := json.Marshal(p)
if err != nil{
panic(err)
}
w.Header().Set("Content-Type","application/json")
w.WriteHeader(http.StatusOK)
w.Write(rp)
}
И сейчас удалось получить такой ответ, к сожалению без вложенных структур Ask, Offer:
HTTP/1.1 200 OK
Content-Type: application/json
Date: Wed, 12 Dec 2018 09:45:02 GMT
Content-Length: 71
{
"Cancomplete": true,
"Candisable": true,
"Complete": false,
"Requiredfee": 0
}
Response code: 200 (OK); Time: 21ms; Content length: 71 bytes
Как я могу корректно составить структуру?
Написано
более трёх лет назад
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации
Закрыть
Реклама
Спасибо!!! Все получилось!
type Order struct {
Ask struct {
Amount float64 `json:"amount"`
Assets []struct {
Assetref string `json:"assetref"`
Name string `json:"name"`
Qty float64 `json:"qty"`
} `json:"assets"`
} `json:"ask"`
Cancomplete bool `json:"cancomplete"`
Candisable bool `json:"candisable"`
Complete bool `json:"complete"`
Offer struct {
Amount float64 `json:"amount"`
Assets []struct {
Assetref string `json:"assetref"`
Name string `json:"name"`
Qty float64 `json:"qty"`
} `json:"assets"`
} `json:"offer"`
Requiredfee float64 `json:"requiredfee"`
}