/// <summary> /// Serializes an expression to Bonsai. /// </summary> /// <param name="expression">Expression to serialize.</param> /// <returns>Bonsai representation of the given expression.</returns> public Json.Expression Serialize(ExpressionSlim expression) { if (_mergeContext && _serializationState != null) { return(new SerializerImpl(_serializationState, _liftFactory).Visit(expression)); } else { var state = new SerializationState(_version); _serializationState = state; var body = new SerializerImpl(state, _liftFactory).Visit(expression); var context = state.ToJson(); _serializationState = null; // PERF: We could consider creating a specialized IDictionary for the // top-level JSON structure to avoid Dictionary allocation. return(Json.Expression.Object(new Dictionary <string, Json.Expression>(2) { { "Context", context }, { "Expression", body }, })); } }
/// <summary> /// Serializes an expression to Bonsai. /// </summary> /// <param name="expression">Expression to serialize.</param> /// <returns>Bonsai representation of the given expression.</returns> private Json.Expression JsonSerialize(ExpressionSlim expression) { var serializationState = new SerializationState(_version); var body = new SerializerImpl(serializationState, GetConstantSerializerDelegate).Visit(expression); var context = serializationState.ToJson(); // PERF: We could consider creating a specialized IDictionary for the // top-level JSON structure to avoid Dictionary allocation. return(Json.Expression.Object(new Dictionary <string, Json.Expression>(2) { { "Context", context }, { "Expression", body }, })); }
public override string Serialize(SC3String sc3String) { var impl = new SerializerImpl(); return(impl.Serialize(sc3String)); }