public override string CreateSerializationCondition(string argName, JsonSchemaAttribute attr) { if (attr == null) { return("true"); } var sb = new List <string>(); if (!double.IsNaN(attr.Minimum)) { if (attr.ExclusiveMinimum) { sb.Add($"{argName}>{attr.Minimum}"); // to int } else { sb.Add($"{argName}>={attr.Minimum}"); // to int } } if (sb.Count > 0) { return(string.Join("&&", sb)); } return("true"); }
public override void GenerateDeserializer(StreamWriter writer, string callName) { var itemCallName = callName + "_ITEM"; writer.Write(@" public static $0 $2(ListTreeNode<JsonValue> parsed) { var value = new Dictionary<string, $1>(); foreach(var kv in parsed.ObjectItems()) { value.Add(kv.Key.GetString(), $3); } return value; } " .Replace("$0", JsonSchemaAttribute.GetTypeName(ValueType)) .Replace("$1", m_inner.ValueType.Name) .Replace("$2", callName) .Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "kv.Value")) ); if (!m_inner.IsInline) { m_inner.GenerateDeserializer(writer, itemCallName); } }
public override void GenerateDeserializer(StreamWriter writer, string callName) { var itemCallName = callName + "_ITEM"; writer.Write(@" public static $0 $2(ListTreeNode<JsonValue> parsed) { var value = new $1[parsed.GetArrayCount()]; int i=0; foreach(var x in parsed.ArrayItems()) { value[i++] = $3; } return value; } " .Replace("$0", JsonSchemaAttribute.GetTypeName(ValueType)) .Replace("$1", m_inner.ValueType.Name) .Replace("$2", callName) .Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x")) ); if (!m_inner.IsInline) { m_inner.GenerateDeserializer(writer, itemCallName); } }
public override void GenerateDeserializer(StreamWriter writer, string callName) { var itemCallName = callName + "_ITEM"; writer.Write(@" public static $0 $2(JsonNode parsed) { var value = new List<$1>(); foreach(var x in parsed.ArrayItems()) { value.Add($3); } return value; }" .Replace("$0", JsonSchemaAttribute.GetTypeName(ValueType)) .Replace("$1", m_inner.ValueType.Name) .Replace("$2", callName) .Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x")) ); if (!m_inner.IsInline) { m_inner.GenerateDeserializer(writer, itemCallName); } }
public FieldSerializationInfo(FieldInfo fi, string path) { m_fi = fi; Path = path + "/" + fi.Name; m_attr = fi.GetCustomAttributes(true).FirstOrDefault(x => x.GetType() == typeof(JsonSchemaAttribute)) as JsonSchemaAttribute; Serialization = GetSerialization(m_fi.FieldType, Path, m_attr); }
public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t) { // return $"{argName}!=null&&{argName}.Count>0"; // this check is only /extensions/VRM/materialProperties/* // should export empty dictionary. return($"{argName}!=null"); }
public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t) { int min = 0; if (t != null) { min = t.MinItems; } return($"{argName}!=null&&{argName}.Length>={min}"); }
static IValueSerialization GetSerialization(Type t, string path, JsonSchemaAttribute attr) { if (t.IsArray) { return(new ArraySerialization(t, GetSerialization(t.GetElementType(), path + "[]", attr))); } else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(List <>)) { return(new ListSerialization(t, GetSerialization(t.GetGenericArguments()[0], path + "[]", attr))); } else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Dictionary <,>) && t.GetGenericArguments()[0] == typeof(string)) { return(new StringKeyDictionarySerialization(t, GetSerialization(t.GetGenericArguments()[1], path, attr))); } // GetCollectionType(fi.FieldType, out suffix, out t); if (t == typeof(sbyte)) { return(new Int8Serialization()); } else if (t == typeof(short)) { return(new Int16Serialization()); } else if (t == typeof(int)) { return(new Int32Serialization()); } else if (t == typeof(long)) { return(new Int64Serialization()); } else if (t == typeof(byte)) { return(new UInt8Serialization()); } else if (t == typeof(ushort)) { return(new UInt16Serialization()); } else if (t == typeof(uint)) { return(new UInt32Serialization()); } else if (t == typeof(ulong)) { return(new UInt64Serialization()); } else if (t == typeof(float)) { return(new SingleSerialization()); } else if (t == typeof(double)) { return(new DoubleSerialization()); } else if (t == typeof(string)) { return(new StringSerialization()); } else if (t == typeof(bool)) { return(new BooleanSerialization()); } else if (t.IsEnum) { return(new EnumIntSerialization(t, attr.EnumSerializationType)); } return(new ObjectSerialization(t, path)); }
public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t) { return($"{argName}!=null"); }
public string CreateSerializationCondition(string argName, JsonSchemaAttribute t) { return("true"); }
public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t) { return($"!string.IsNullOrEmpty({argName})"); }
public abstract string CreateSerializationCondition(string argName, JsonSchemaAttribute t);