Autodesk.Workspaces.WorkspaceConverter.WriteJson C# (CSharp) Method

WriteJson() public method

public WriteJson ( JsonWriter writer, object value, JsonSerializer serializer ) : void
writer Newtonsoft.Json.JsonWriter
value object
serializer Newtonsoft.Json.JsonSerializer
return void
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var ws = (WorkspaceModel)value;

            writer.WriteStartObject();

            writer.WritePropertyName("Uuid");
            writer.WriteValue(ws.Guid.ToString());
            writer.WritePropertyName("IsCustomNode");
            writer.WriteValue(value is CustomNodeWorkspaceModel ? true : false);
            if(value is CustomNodeWorkspaceModel)
            {
                writer.WritePropertyName("Category");
                writer.WriteValue(((CustomNodeWorkspaceModel)value).Category);
            }
            writer.WritePropertyName("LastModified");
            writer.WriteValue(ws.LastSaved.ToUniversalTime());
            writer.WritePropertyName("LastModifiedBy");
            writer.WriteValue(ws.Author);
            writer.WritePropertyName("Description");
            writer.WriteValue(ws.Description);
            writer.WritePropertyName("Name");
            writer.WriteValue(ws.Name);

            //element resolver
            writer.WritePropertyName("ElementResolver");
            serializer.Serialize(writer, ws.ElementResolver);

            //nodes
            writer.WritePropertyName("Nodes");
            serializer.Serialize(writer, ws.Nodes);

            //notes
            writer.WritePropertyName("Notes");
            serializer.Serialize(writer, ws.Notes);

            //connectors
            writer.WritePropertyName("Connectors");
            serializer.Serialize(writer, ws.Connectors);

            //annotations
            writer.WritePropertyName("Annotations");
            serializer.Serialize(writer, ws.Annotations);

            //cameras
            writer.WritePropertyName("Cameras");
            writer.WriteStartArray();
            writer.WriteEndArray();

            writer.WritePropertyName("Dependencies");
            writer.WriteStartArray();
            var functions = ws.Nodes.Where(n => n is Function);
            if (functions.Any())
            {
                var deps = functions.Cast<Function>().Select(f => f.Definition.FunctionId).Distinct();
                foreach(var d in deps)
                {
                    writer.WriteValue(d);
                }
            }
            writer.WriteEndArray();

            writer.WriteEndObject();
        }
    }