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); }
public static JToken NewDefaultJInstance(this JsonSchema self) { if (self.GetJTokenType() == JTokenType.Object) { return(NewDefaultJObject(self)); } return(self.ParseToJValue(self.defaultVal)); }
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}"); }