public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JToken jToken = JToken.Load(reader); if (jToken.Type == JTokenType.Object) { JsonSchema schema = jToken.ToObject <JsonSchema>(serializer); return(new Dependency(schema)); } else if (jToken.Type == JTokenType.Array) { IList <string> propertyDependencies = new List <string>(); foreach (JToken elementToken in jToken as JArray) { if (elementToken.Type == JTokenType.String) { propertyDependencies.Add(elementToken.ToObject <string>(serializer)); } else { serializer.CaptureError(elementToken, ErrorNumber.InvalidPropertyDependencyType, elementToken.Type); } } return(new Dependency(propertyDependencies)); } else { serializer.CaptureError(jToken, ErrorNumber.InvalidDependencyType, jToken.Type); return(null); } }
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 { serializer.CaptureError(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; serializer.CaptureError(elementToken, ErrorNumber.InvalidTypeString, typeString); } } else { allValid = false; serializer.CaptureError(elementToken, ErrorNumber.InvalidTypeType, elementToken.Type); } } if (!allValid) { return(null); } } else { serializer.CaptureError(jToken, ErrorNumber.InvalidTypeType, jToken.Type); return(null); } return(schemaTypes); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType != JsonToken.String) { JToken jToken = JToken.Load(reader); string propertyName = reader.Path?.Split(s_pathSplitChars).LastOrDefault() ?? string.Empty; serializer.CaptureError(jToken, ErrorNumber.NotAString, propertyName, reader.TokenType); return(string.Empty); } return(reader.Value); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JToken jToken = JToken.Load(reader); if (jToken.Type == JTokenType.Boolean) { bool val = jToken.ToObject <bool>(); return(new AdditionalProperties(val)); } else if (jToken.Type == JTokenType.Object) { JsonSchema schema = jToken.ToObject <JsonSchema>(serializer); return(new AdditionalProperties(schema)); } else { serializer.CaptureError(jToken, ErrorNumber.InvalidAdditionalPropertiesType, jToken.Type); return(null); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JToken jToken = JToken.Load(reader); if (jToken.Type == JTokenType.Object) { JsonSchema schema = jToken.ToObject <JsonSchema>(serializer); return(new Items(schema)); } else if (jToken.Type == JTokenType.Array) { IList <JsonSchema> schemas = jToken.ToObject <IList <JsonSchema> >(serializer); return(new Items(schemas)); } else { serializer.CaptureError(jToken, ErrorNumber.InvalidItemsType, jToken.Type); return(null); } }