Example #1
0
        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);
            }
        }
Example #5
0
        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);
            }
        }