/// <summary> /// Writes the given property containers to a JSON string and any asset references to the given storage /// @NOTE return string is in the format "[{..}, {..}]" /// </summary> /// <param name="objects">Generic property containers to write</param> /// <returns>JSON stringified objects</returns> public static string Persist(params IPropertyContainer[] objects) { var sb = new StringBuilder(); sb.Append("["); var first = true; foreach (var obj in objects) { if (!first) { sb.Append(",\n"); } else { first = false; } sb.Append(JsonPropertyContainerWriter.Write(obj, Visitor)); } sb.Append("]"); return(sb.ToString()); }
/// <summary> /// NOTE: This method is not optimal. It must type check and cast objects /// @TODO Write specialized methods for our use cases /// </summary> /// <param name="writer"></param> /// <param name="objects">Objects to pack</param> private static void Persist(TextWriter writer, IEnumerable <IPropertyContainer> objects) { writer.Write("["); var first = true; foreach (var obj in objects) { if (null == obj) { continue; } if (!first) { writer.Write(",\n"); } else { first = false; } (obj as IRegistryObject)?.Refresh(); if (obj is UTinyProject) { writer.Write(JsonPropertyContainerWriter.Write((UTinyProject)obj, Visitor)); } else if (obj is UTinyModule) { writer.Write(JsonPropertyContainerWriter.Write((UTinyModule)obj, Visitor)); } else if (obj is UTinyType) { writer.Write(JsonPropertyContainerWriter.Write((UTinyType)obj, Visitor)); } else if (obj is UTinyEntityGroup) { writer.Write(JsonPropertyContainerWriter.Write((UTinyEntityGroup)obj, Visitor)); } else if (obj is UTinyEntity) { writer.Write(JsonPropertyContainerWriter.Write((UTinyEntity)obj, Visitor)); } else if (obj is UTinyObject) { writer.Write(JsonPropertyContainerWriter.Write((UTinyObject)obj, Visitor)); } else if (obj is UTinyScript) { writer.Write(JsonPropertyContainerWriter.Write((UTinyScript)obj, Visitor)); } else if (obj is UTinySystem) { writer.Write(JsonPropertyContainerWriter.Write((UTinySystem)obj, Visitor)); } else { writer.Write(JsonPropertyContainerWriter.Write(obj, Visitor)); } } writer.Write("]"); }
/// <summary> /// Writes the given property container to a JSON string and any asset references to the given storage /// </summary> /// <param name="container">Generic property container</param> /// <returns>JSON stringified object</returns> public static string Persist(IPropertyContainer container) { return(JsonPropertyContainerWriter.Write(container, Visitor)); }
public static string Serialize <TContainer>(ref TContainer container, JsonPropertyVisitor visitor = null) where TContainer : struct, IPropertyContainer { return(JsonPropertyContainerWriter.Write(ref container, visitor)); }