static bool TrySerializeAdapter <TValue>(IJsonAdapter adapter, JsonWriter writer, ref TValue value) { if (adapter is IJsonAdapter <TValue> typed) { using (var buffer = new JsonStringBuffer(16, Allocator.TempJob)) { typed.Serialize(buffer, value); unsafe { writer.AsUnsafe().WriteValueLiteral(buffer.GetUnsafePtr(), buffer.Length); } } return(true); } if (adapter is Adapters.Contravariant.IJsonAdapter <TValue> typedContravariant) { using (var buffer = new JsonStringBuffer(16, Allocator.TempJob)) { typedContravariant.Serialize(buffer, value); unsafe { writer.AsUnsafe().WriteValueLiteral(buffer.GetUnsafePtr(), buffer.Length); } } return(true); } return(false); }
public static void ToJson <T>(JsonStringBuffer buffer, T value, JsonSerializationParameters parameters = default) { using (var writer = new JsonWriter(parameters.InitialCapacity, Allocator.Temp, new JsonWriterOptions { Minified = parameters.Minified, Simplified = parameters.Simplified })) { ToJson(writer, value, parameters); unsafe { buffer.Write(writer.AsUnsafe().GetUnsafeReadOnlyPtr(), writer.AsUnsafe().Length); } } }