public static JObject SerializeObjectAsJObject( object obj, bool includePrivate = true, SerializeDebugLevel debugTrace = SerializeDebugLevel.None) { var settings = GetJsonSerializerSettings(includePrivate, debugTrace, out var serializer); JObject jObject; try { jObject = JObject.FromObject(obj, serializer); } catch (Exception) { if (settings.TraceWriter != null) { Console.WriteLine(settings.TraceWriter); } throw; } if (debugTrace == SerializeDebugLevel.Always) { Console.WriteLine(settings.TraceWriter); } return(jObject); }
private static JsonSerializerSettings GetJsonSerializerSettings(bool includePrivate, SerializeDebugLevel debugTrace, out JsonSerializer serializer) { var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; if (includePrivate) { settings.ContractResolver = new PrivateMemberContractResolver(); } if (debugTrace != SerializeDebugLevel.None) { settings.TraceWriter = new MemoryTraceWriter(); } serializer = JsonSerializer.CreateDefault(settings); serializer.Converters.Add(new StringEnumConverter()); serializer.Converters.Add(new BoardSquareConverter()); serializer.Converters.Add(new Vector3Converter()); serializer.Converters.Add(new GridPosConverter()); return(settings); }
public static string SerializeObject( object obj, bool includePrivate = true, SerializeDebugLevel debugTrace = SerializeDebugLevel.None) { var settings = GetJsonSerializerSettings(includePrivate, debugTrace, out var serializer); var stringWriter = new StringWriter(new StringBuilder(256), CultureInfo.InvariantCulture); using var jsonTextWriter = new JsonTextWriter(stringWriter) { Formatting = serializer.Formatting }; try { serializer.Serialize(jsonTextWriter, obj, null); } catch (Exception) { if (settings.TraceWriter != null) { Console.WriteLine(settings.TraceWriter); } throw; } if (debugTrace == SerializeDebugLevel.Always) { Console.WriteLine(settings.TraceWriter); } return(stringWriter.ToString()); }
public static string SerializeObject( object obj, bool includePrivate = true, SerializeDebugLevel debugTrace = SerializeDebugLevel.None) { var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; if (includePrivate) { settings.ContractResolver = new PrivateMemberContractResolver(); } if (debugTrace != SerializeDebugLevel.None) { settings.TraceWriter = new MemoryTraceWriter(); } var serializer = JsonSerializer.CreateDefault(settings); serializer.Converters.Add(new StringEnumConverter()); serializer.Converters.Add(new BoardSquareConverter()); var stringWriter = new StringWriter(new StringBuilder(256), CultureInfo.InvariantCulture); using var jsonTextWriter = new JsonTextWriter(stringWriter) { Formatting = serializer.Formatting }; try { serializer.Serialize(jsonTextWriter, obj, null); } catch (Exception) { if (settings.TraceWriter != null) { Console.WriteLine(settings.TraceWriter); } throw; } if (debugTrace == SerializeDebugLevel.Always) { Console.WriteLine(settings.TraceWriter); } return(stringWriter.ToString()); }