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;
}