public static void DeserializeInto(this SerializationData data, ref object instance, bool forceReflected = false) { try { if (string.IsNullOrEmpty(data.json)) { instance = null; return; } #if DEBUG_SERIALIZATION Debug.Log(data.ToString($"<color=#3388FF>Deserializing into: <b>{instance?.GetType().Name ?? "null"} [{instance?.GetHashCode().ToString() ?? "N/A"}]</b></color>")); #endif var operation = StartOperation(); operation.objectReferences.AddRange(data.objectReferences); DeserializeJson(operation.serializer, data.json, ref instance, forceReflected); EndOperation(operation); } catch (Exception ex) { try { Debug.LogWarning(data.ToString("Deserialization Failure Data"), instance as UnityObject); } catch (Exception ex2) { Debug.LogWarning("Failed to log deserialization failure data:\n" + ex2, instance as UnityObject); } throw new SerializationException($"Deserialization into '{instance?.GetType().ToString() ?? "null"}' failed.", ex); } }
public static SerializationData Serialize(this object value, bool forceReflected = false) { try { var operation = StartOperation(); var json = SerializeJson(operation.serializer, value, forceReflected); var objectReferences = operation.objectReferences.ToArray(); var data = new SerializationData(json, objectReferences); EndOperation(operation); #if DEBUG_SERIALIZATION Debug.Log(data.ToString($"<color=#88FF00>Serialized: <b>{value?.GetType().Name ?? "null"} [{value?.GetHashCode().ToString() ?? "N/A"}]</b></color>")); #endif return(data); } catch (Exception ex) { throw new SerializationException($"Serialization of '{value?.GetType().ToString() ?? "null"}' failed.", ex); } }