/// <summary> /// Use the <paramref name="reader"/> as JSON input and returns a <see cref="JwtArray"/>. /// </summary> /// <param name="reader"></param> public static JwtArray ReadJsonArray(ref Utf8JsonReader reader) { var array = new JwtArray(new List <JwtValue>(2)); while (reader.Read()) { switch (reader.TokenType) { case JsonTokenType.EndArray: return(array); case JsonTokenType.StartObject: array.Add(ReadJsonObject(ref reader)); break; case JsonTokenType.StartArray: var innerArray = ReadJsonArray(ref reader); array.Add(innerArray); break; case JsonTokenType.Null: array.Add(JwtValue.Null); break; case JsonTokenType.Number: if (reader.TryGetInt64(out long longValue)) { array.Add(longValue); } else { array.Add(reader.GetDouble()); } break; case JsonTokenType.String: string valueString = reader.GetString(); array.Add(valueString); break; case JsonTokenType.True: array.Add(JwtValue.True); break; case JsonTokenType.False: array.Add(JwtValue.False); break; case JsonTokenType.EndObject: case JsonTokenType.PropertyName: default: break; } } // If we are here, we are missing a closing brace. ThrowHelper.ThrowFormatException_MalformedJson(); return(default);