// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschränkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System; using Newtonsoft.Json; namespace Squidex.Infrastructure.Json.Newtonsoft { public sealed class NamedLongIdConverter : JsonClassConverter> { private static readonly Parser Parser = long.TryParse; protected override void WriteValue(JsonWriter writer, NamedId value, JsonSerializer serializer) { writer.WriteValue(value.ToString()); } protected override NamedId ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { var value = serializer.Deserialize(reader)!; if (!NamedId.TryParse(value, Parser, out var result)) { throw new JsonException("Named id must have at least 2 parts divided by commata."); } return result; } } }