2017-02-19 3 views
0

unexpected end of JSON inputのエラーが発生している理由を理解できたら助力してください。LimitOrder structに次のjsonをアンマーシャルしようとしていますか?構造体に非整列化中に予期しないJSON入力が終了しました

P .:もしLimitOrder構造体の代わりにmap[string]json.RawMessageを使用すると、私は非マーシャルを実行できます。

{ 
    "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構造体

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"` 
} 

、これは私がそれ

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 
} 
+0

エラーは見つかりませんでした。それ以外にも私は遊び場[https://play.golang.org/p/udPQ_TayXG](https://play.golang.org/p/udPQ_TayXG)でそれを実行すると動作します。 –

答えて

0

は私がgolang-ナッツグループにいくつかの助けを発見した非整列化しようとしている方法です。ここで答えを確認することができますhttps://groups.google.com/forum/#!topic/golang-nuts/SZXBcXgUoo0。長い話を短くするには、問題は私の構造であり、私はjson全体の小さな部分の構造だけを構築していたので、json応答全体の構造を構築しました。

関連する問題