OrderHistory - Fatal error in JsonConvert. Failed to map the JSON object to the JavaScript class "OrderData" because of a type error.
AndrewBarba opened this issue · comments
Seeing this error when listing certain markets:
pathname: '/account/getorderhistory',
data: { market: 'BTC-NEO' },
error: Error: Fatal error in JsonConvert. Failed to map the JSON object to the JavaScript class "OrderData" because of a type error.
Class property:
OrderType
Expected type:
undefined
JSON property:
OrderType
JSON type:
string
JSON value:
"LIMIT_BUY"
Reason: Expected type is unknown. There might be multiple reasons for this:
- You are missing the decorator @JsonObject (for object mapping)
- You are missing the decorator @JsonConverter (for custom mapping) before your class definition
- Your given class is undefined in the decorator because of circular dependencies
at JsonConvert.deserializeObject_loopProperty (/api/node_modules/json2typescript/src/json2typescript/json-convert.js:220:19)
at JsonConvert.deserializeObject (/api/node_modules/json2typescript/src/json2typescript/json-convert.js:132:18)
at JsonConvert.deserializeArray /api/node_modules/json2typescript/src/json2typescript/json-convert.js:157:29)
at JsonConvert.deserialize (/api/node_modules/json2typescript/src/json2typescript/json-convert.js:109:25)
at Promise (/api/node_modules/bittrex-typescript/src/Transport.js:43:53)
at new Promise (<anonymous>)
at Transport.handleResponse (/api/node_modules/bittrex-typescript/src/Transport.js:39:16)
at got.then (/api/node_modules/bittrex-typescript/src/Transport.js:29:25)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7) }
Any ideas? The response looks totally normal, every OrderType
is either LIMIT_BUY
or LIMIT_SELL
Hi @AndrewBarba,
Thanks for the report. It seems to be an issue with the deserialization. Looking at the code though, it seems like that property is there:
https://github.com/lookfirst/bittrex-typescript/blob/master/src/model/OrderData.ts#L15
I am at a bit of a loss myself!
Yeah really strange, I've never used a mapper like this before. This line confused me:
@JsonProperty('OrderType', undefined, true)
That undefined
seems strange, I feel like it should be String
, but I don't really know...
The mappers save a lot of typing for populating models with raw json data. They also help in catching errors like this. If bittrex changes their api randomly, you want your code to fail fast and with an error.
You are probably correct. Looks like a copy/paste error. Can you edit the code in your node_modules folder and try it as String? If that works, submit a PR and I'll merge it straight in.