示例#1
0
        public static JValue ParseToJValue(this JsonSchema self, string newVal)
        {
            switch (self.GetJTokenType())
            {
            case JTokenType.Boolean:
                if (newVal == null)
                {
                    return(new JValue(false));
                }
                return(new JValue(bool.Parse(newVal)));

            case JTokenType.Integer:
                if (newVal == null)
                {
                    return(new JValue(0));
                }
                return(new JValue(int.Parse(newVal)));

            case JTokenType.Float:
                if (newVal == null)
                {
                    return(new JValue(0f));
                }
                return(new JValue(float.Parse(newVal)));

            case JTokenType.String:
                if (newVal == null)
                {
                    return(new JValue(""));
                }
                return(new JValue(newVal));
            }
            throw new NotImplementedException("Cant handle type " + self.type);
        }
示例#2
0
 public static JToken NewDefaultJInstance(this JsonSchema self)
 {
     if (self.GetJTokenType() == JTokenType.Object)
     {
         return(NewDefaultJObject(self));
     }
     return(self.ParseToJValue(self.defaultVal));
 }
示例#3
0
        public async Task <V> AddViewForJsonSchemaField(V parentView, JsonSchema field, string fieldName)
        {
            JTokenType type = field.GetJTokenType();

            if (type == JTokenType.Boolean)
            {
                return(await AddAndInit(parentView, field, fieldName, await NewBoolFieldView(field)));
            }
            if (type == JTokenType.Integer)
            {
                if (!field.contentEnum.IsNullOrEmpty())
                {
                    return(await AddAndInit(parentView, field, fieldName, await NewEnumFieldView(field)));
                }
                else
                {
                    return(await AddAndInit(parentView, field, fieldName, await NewIntegerFieldView(field)));
                }
            }
            if (type == JTokenType.Float)
            {
                return(await AddAndInit(parentView, field, fieldName, await NewFloatFieldView(field)));
            }
            if (type == JTokenType.String)
            {
                if (!field.contentEnum.IsNullOrEmpty())
                {
                    return(await AddAndInit(parentView, field, fieldName, await NewEnumFieldView(field)));
                }
                else
                {
                    return(await AddAndInit(parentView, field, fieldName, await NewStringFieldView(field)));
                }
            }
            if (type == JTokenType.Object)
            {
                if (field.properties == null)
                {
                    return(await AddAndInit(parentView, field, fieldName, await NewRecursiveSchemaView(field)));
                }
                else
                {
                    var objectFieldView = await NewObjectFieldView(field);
                    await InitChild(await AddChild(parentView, objectFieldView), fieldName, field);
                    await ObjectJsonSchemaToView(field, await SelectInnerViewContainerFromObjectFieldView(objectFieldView));

                    return(objectFieldView);
                }
            }
            if (type == JTokenType.Array)
            {
                var e = field.items;
                if (e.Count == 1)
                {
                    JsonSchema item       = e.First();
                    var        childJType = item.GetJTokenType();
                    if (schemaGenerator.IsSimpleType(childJType))
                    {
                        return(await AddAndInit(parentView, field, fieldName, await NewListFieldView(field)));
                    }
                    else if (childJType == JTokenType.Object)
                    {
                        return(await AddAndInit(parentView, field, fieldName, await NewListFieldView(field)));
                    }
                    else
                    {
                        throw new NotImplementedException("Array handling not impl. for type " + item.type);
                    }
                }
                else
                {
                    return(await HandleMixedObjectArray(parentView, fieldName, field));
                }
            }
            throw new NotImplementedException($"Did not handle field {field.title} of type={type}");
        }