public override object ReadJson()

in src/Json.Schema/SchemaTypeConverter.cs [21:78]


        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JToken jToken = JToken.Load(reader);
            var schemaTypes = new List<SchemaType>();

            if (jToken.Type == JTokenType.String)
            {
                string typeString = jToken.ToObject<string>();
                SchemaType schemaType = SchemaTypeFromString(typeString);
                if (schemaType != SchemaType.None)
                {
                    schemaTypes.Add(schemaType);
                }
                else
                {
                    SchemaValidationErrorAccumulator.Instance.AddError(jToken, ErrorNumber.InvalidTypeString, typeString);
                    return null;
                }
            }
            else if (jToken.Type == JTokenType.Array)
            {
                bool allValid = true;
                foreach (JToken elementToken in jToken as JArray)
                {
                    if (elementToken.Type == JTokenType.String)
                    {
                        string typeString = elementToken.ToObject<string>();
                        SchemaType schemaType = SchemaTypeFromString(typeString);
                        if (schemaType != SchemaType.None)
                        {
                            schemaTypes.Add(schemaType);
                        }
                        else
                        {
                            allValid = false;
                            SchemaValidationErrorAccumulator.Instance.AddError(elementToken, ErrorNumber.InvalidTypeString, typeString);
                        }
                    }
                    else
                    {
                        allValid = false;
                        SchemaValidationErrorAccumulator.Instance.AddError(elementToken, ErrorNumber.InvalidTypeType, elementToken.Type);
                    }
                }

                if (!allValid)
                {
                    return null;
                }
            }
            else
            {
                SchemaValidationErrorAccumulator.Instance.AddError(jToken, ErrorNumber.InvalidTypeType, jToken.Type);
                return null;
            }

            return schemaTypes;
        }