API response json to C# object
Json.NET has a very useful JsonConverter which you can use to add a custom JsonConverter. Which what you actually need.
So, you can do something like this :
public class CandlestickConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(Candlestick);
    }

    public override object ReadJson(JsonReader reader , Type objectType , object existingValue , JsonSerializer serializer)
    {
        if(reader.TokenType == JsonToken.Null)
        {
            return null;
        }

        var candle = ( existingValue as Candlestick ?? new Candlestick() );

        var array = JArray.Load(reader);

        candle.OpenTime = array.ElementAtOrDefault(0)?.ToObject&lt;long&gt;(serializer) ?? 0;
        candle.Open = array.ElementAtOrDefault(1)?.ToObject&lt;double&gt;(serializer) ?? 0;
        candle.High = array.ElementAtOrDefault(2)?.ToObject&lt;double&gt;(serializer) ?? 0;
        candle.Low = array.ElementAtOrDefault(3)?.ToObject&lt;double&gt;(serializer) ?? 0;
        candle.Close = array.ElementAtOrDefault(4)?.ToObject&lt;double&gt;(serializer) ?? 0;
        candle.Volume = array.ElementAtOrDefault(5)?.ToObject&lt;double&gt;(serializer) ?? 0;
        candle.CloseTime = array.ElementAtOrDefault(6)?.ToObject&lt;long&gt;(serializer) ?? 0;
        candle.QuoteAssetVolume = array.ElementAtOrDefault(7)?.ToObject&lt;double&gt;(serializer) ?? 0;
        candle.NumberOfTrades = array.ElementAtOrDefault(8)?.ToObject&lt;long&gt;(serializer) ?? 0;
        candle.TakerBuyBaseAssetVolume = array.ElementAtOrDefault(9)?.ToObject&lt;double&gt;(serializer) ?? 0;
        candle.TakerBuyQuoteAssetVolume = array.ElementAtOrDefault(10)?.ToObject&lt;double&gt;(serializer) ?? 0;

        return candle;
    }

    public override void WriteJson(JsonWriter writer , object value , JsonSerializer serializer)
    {
        var candle = (Candlestick) value;
        serializer.Serialize(writer ,
            new[]
            {
                candle.OpenTime,
                candle.Open,
                candle.High,
                candle.Low,
                candle.Close,
                candle.Volume,
                candle.CloseTime,
                candle.QuoteAssetVolume,
                candle.NumberOfTrades,
                candle.TakerBuyBaseAssetVolume,
                candle.TakerBuyQuoteAssetVolume
            });
    }
}

Now, using this custom converter you can use the JsonConverter attribute on the class like this :
[JsonConverter(typeof(CandlestickConverter))]
public class Candlestick
{
    ...
}

Now you can do this directly :
var candles = JsonConvert.DeserializeObject&lt;List&lt;Candlestick&gt;&gt;(jsonObject);

So, you don't need to use extensions, you only need to do a custom converter which is the proper way to handle Json serialization when using Json.NET.