public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var obj = JObject.Load(reader); var type = new SymbolFilterTypeConverter(false).ReadString(obj["filterType"].ToString()); BinanceSymbolFilter result; switch (type) { case SymbolFilterType.LotSize: result = new BinanceSymbolLotSizeFilter { MaxQuantity = (decimal)obj["maxQty"], MinQuantity = (decimal)obj["minQty"], StepSize = (decimal)obj["stepSize"] }; break; case SymbolFilterType.MarketLotSize: result = new BinanceSymbolMarketLotSizeFilter { MaxQuantity = (decimal)obj["maxQty"], MinQuantity = (decimal)obj["minQty"], StepSize = (decimal)obj["stepSize"] }; break; case SymbolFilterType.MinNotional: result = new BinanceSymbolMinNotionalFilter { MinNotional = (decimal)obj["minNotional"], ApplyToMarketOrders = (bool)obj["applyToMarket"], AveragePriceMinutes = (int)obj["avgPriceMins"] }; break; case SymbolFilterType.Price: result = new BinanceSymbolPriceFilter { MaxPrice = (decimal)obj["maxPrice"], MinPrice = (decimal)obj["minPrice"], TickSize = (decimal)obj["tickSize"] }; break; case SymbolFilterType.MaxNumberAlgorithmicOrders: result = new BinanceSymbolMaxAlgorithmicOrdersFilter { MaxNumberAlgorithmicOrders = (int)obj["maxNumAlgoOrders"] }; break; case SymbolFilterType.MaxNumberOrders: result = new BinanceSymbolMaxOrdersFilter { MaxNumberOrders = (int)obj["maxNumOrders"] }; break; case SymbolFilterType.IcebergParts: result = new BinanceSymbolIcebergPartsFilter { Limit = (int)obj["limit"] }; break; case SymbolFilterType.PricePercent: result = new BinanceSymbolPercentPriceFilter { MultiplierUp = (decimal)obj["multiplierUp"], MultiplierDown = (decimal)obj["multiplierDown"], AveragePriceMinutes = (int)obj["avgPriceMins"] }; break; default: Debug.WriteLine("Can't parse symbol filter of type: " + obj["filterType"]); result = new BinanceSymbolFilter(); break; } result.FilterType = type; return(result); }
public override object ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer) { var obj = JObject.Load(reader); #pragma warning disable 8604, 8602 var type = new SymbolFilterTypeConverter(false).ReadString(obj["filterType"].ToString()); BinanceFuturesSymbolFilter result; switch (type) { case SymbolFilterType.LotSize: result = new BinanceSymbolLotSizeFilter { MaxQuantity = (decimal)obj["maxQty"], MinQuantity = (decimal)obj["minQty"], StepSize = (decimal)obj["stepSize"] }; break; case SymbolFilterType.MarketLotSize: result = new BinanceSymbolMarketLotSizeFilter { MaxQuantity = (decimal)obj["maxQty"], MinQuantity = (decimal)obj["minQty"], StepSize = (decimal)obj["stepSize"] }; break; case SymbolFilterType.Price: result = new BinanceSymbolPriceFilter { MaxPrice = (decimal)obj["maxPrice"], MinPrice = (decimal)obj["minPrice"], TickSize = (decimal)obj["tickSize"] }; break; case SymbolFilterType.MaxNumberOrders: result = new BinanceSymbolMaxOrdersFilter { MaxNumberOrders = (int)obj["limit"] }; break; case SymbolFilterType.PricePercent: result = new BinanceSymbolPercentPriceFilter { MultiplierUp = (decimal)obj["multiplierUp"], MultiplierDown = (decimal)obj["multiplierDown"], MultiplierDecimal = (int)obj["multiplierDecimal"] }; break; case SymbolFilterType.MaxNumberAlgorithmicOrders: result = new BinanceSymbolMaxAlgorithmicOrdersFilter { MaxNumberAlgorithmicOrders = (int)obj["limit"] }; break; default: Debug.WriteLine("Can't parse symbol filter of type: " + obj["filterType"]); result = new BinanceFuturesSymbolFilter(); break; } #pragma warning restore 8604 result.FilterType = type; return(result); }