示例#1
0
        /// <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);