Could you help me to understand why I'm always getting the error unexpected 
end of JSON input while trying to unmarshal the following json to the 
LimitOrder struct? It works if I use golang playground 
https://play.golang.org/p/udPQ_TayXG but not locally running tests.


P.S.: if I use map[string]json.RawMessage instead of LimitOrder struct I'm 
able to execute the unmarshal.


{
  "response_data": {
    "order": {
      "order_id": 3,
      "coin_pair": "BRLBTC",
      "order_type": 1,
      "status": 4,
      "has_fills": true,
      "quantity": "1.00000000",
      "limit_price": "900.00000",
      "executed_quantity": "1.00000000",
      "executed_price_avg": "900.00000",
      "fee": "0.00300000",
      "created_timestamp": "1453835329",
      "updated_timestamp": "1453835329",
      "operations": [
        {
          "operation_id": 1,
          "quantity": "1.00000000",
          "price": "900.00000",
          "fee_rate": "0.30",
          "executed_timestamp": "1453835329"
        }
      ]
    }
  },
  "status_code": 100,
  "server_unix_timestamp": "1453835329"}

*LimitOrder struct*


type LimitOrder struct {
  OrderId int `json:"order_id"`
  CoinPair string `json:"coin_pair"`
  OrderType int `json:"order_type"`
  Status int `json:"status"`
  HasFills bool `json:"has_fills"`
  Quantity float64 `json:"quantity,string"`
  LimitPrice float64 `json:"limit_price,string"`
  ExecutedQuantity float64 `json:"executed_quantity,string"`
  ExecutedPriceAvg float64 `json:"executed_price_avg,string"`
  Fee float64 `json:"fee,string"`
  Operations []*Operation `json:"operations"`
  CreatedTimestamp string `json:"created_timestamp"`
  UpdatedTimestamp string `json:"updated_timestamp"`}


and this is how I'm trying to unmarshal it


func (limitOrder *LimitOrder) UnmarshalJSON(buf []byte) error {

  tmp := make(map[string]json.RawMessage)
  if err := json.Unmarshal(buf, &tmp); err != nil {
    return err
  }

  tmp2 := make(map[string]json.RawMessage)

  if err := json.Unmarshal(tmp["response_data"], &tmp2); err != nil {
    return err
  }

  if err := json.Unmarshal(tmp2["order"], limitOrder); err != nil {
    return err
  }

  return nil}

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to