Ejemplo n.º 1
0
        private static bool TryExtractProperty(VowpalWabbitJsonParseState state, string property, string expectedProperty, JsonToken expectedToken, Action <JsonReader> success)
        {
            if (property.Equals(expectedProperty, StringComparison.OrdinalIgnoreCase))
            {
                if (!state.Reader.Read() && state.Reader.TokenType != expectedToken)
                {
                    throw new VowpalWabbitJsonException(state.Reader, $"Property '{expectedProperty}' must be of type '{expectedToken}'");
                }

                success(state.Reader);
                return(true);
            }

            return(false);
        }
Ejemplo n.º 2
0
        private static bool TryExtractArrayProperty <T>(VowpalWabbitJsonParseState state, string property, string expectedProperty, Action <T[]> success)
        {
            return(TryExtractProperty(
                       state,
                       property,
                       expectedProperty,
                       JsonToken.StartArray,
                       reader =>
            {
                success(JsonSerializer.CreateDefault().Deserialize <T[]>(reader));

                if (state.Reader.TokenType != JsonToken.EndArray && !reader.Read())
                {
                    throw new VowpalWabbitJsonException(state.Reader, $"Property {expectedProperty} must end with 'EndArray'");
                }
            }));
        }