• Как я могу создать структуру для json объекта и получить отдельные значения в golang?

    @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 Автор вопроса
    Я сейчас попробовал такую структуру:

    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

    Как я могу корректно составить структуру?