using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json.Converters;
public static void Main()
{0:45, 1:857, 10:7, 2:42, 3:8, 5:89, 55:98},
var fireBaseResult = FireBaseResult.FromJson(jsonInput);
foreach(var row in fireBaseResult){
public class FireBaseResult
public static List<FireBaseResultElement> FromJson(string json) => JsonConvert.DeserializeObject<List<FireBaseResultElement>>(json, Converter.Settings);
public partial struct FireBaseResultElement
public long?[] InnerArray;
public static implicit operator FireBaseResultElement(long?[] Items) => new FireBaseResultElement{InnerArray = Items};
internal static class Converter
public static readonly JsonSerializerSettings Settings =
new JsonSerializerSettings{MetadataPropertyHandling = MetadataPropertyHandling.Ignore, DateParseHandling = DateParseHandling.None,
Converters = {new FireBaseResultElementConverter(), new IsoDateTimeConverter{DateTimeStyles = DateTimeStyles.AssumeUniversal}}, };
internal class FireBaseResultElementConverter : JsonConverter
public override bool CanConvert(Type t) => t == typeof(FireBaseResultElement) || t == typeof(FireBaseResultElement? );
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
switch (reader.TokenType)
return new FireBaseResultElement{};
case JsonToken.StartObject:
var objectValue = serializer.Deserialize<Dictionary<string, long?>>(reader);
return new FireBaseResultElement{InnerArray=objectValue.Values.ToArray()};
case JsonToken.StartArray:
var arrayValue = serializer.Deserialize<long?[]>(reader);
return new FireBaseResultElement{InnerArray=arrayValue};
throw new Exception("Cannot unmarshal type FireBaseResultElement");
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
throw new Exception("Cannot marshal type FireBaseResultElement");