Tinkoff / invest-openapi-csharp-sdk

Apache License 2.0
100 stars 33 forks source link

Ошибка при десериализации InstrumentInfoPayload #75

Closed t3chn0pr13st closed 3 years ago

t3chn0pr13st commented 3 years ago

Для инструмента BBG000RG4ZQ4 при десериализации InstrumentInfoPayload возникает исключение System.Text.Json.JsonException: 'The JSON value could not be converted to Tinkoff.Trading.OpenApi.Models.InstrumentInfoPayload. Path: $.lot | LineNumber: 0 | BytePositionInLine: 94.' FormatException: Either the JSON value is not in a supported format, or is out of bounds for an Int32.

При этом сам payload содержит {"figi":"BBG000RG4ZQ4","trade_status":"normal_trading","min_price_increment":1e-05,"lot":1e+06}

image

t3chn0pr13st commented 3 years ago

Для себя форкнул и поменял тип поля Lot c int на decimal, ошибка ушла. Если такой вариант решения подходит, могу пулл реквест сделать)

RWander commented 3 years ago

Да, лучше сделай пул реквест

rus-art commented 3 years ago

По спецификации там int

lot* integer($int32)

Лучше оставить int. Это можно пофиксить, если указать NumberStyles при парсинге int.Parse("1e+06", NumberStyles.Float) дает 1000000

rus-art commented 3 years ago

@t3chn0pr13st Посмотри PR #79, пожалуйста. Вроде удалось пофиксить

t3chn0pr13st commented 3 years ago

@t3chn0pr13st Посмотри PR #79, пожалуйста. Вроде удалось пофиксить

Большое спасибо, влил себе этот коммит, теперь всё работает как надо.

rus-art commented 3 years ago

Хорошо, мержу