Sha256: eab0880d5430713372927aff153d49efa7b5281f5acf91d8d5c51a65fab6e877

Contents?: true

Size: 1.49 KB

Versions: 37

Compression:

Stored size: 1.49 KB

Contents

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace Generators.Input
{
    public class CanonicalDataCaseJsonConverter : JsonConverter
    {
        private static readonly string[] NonInputProperties = {"description", "property", "expected", "comments"};

        public override bool CanConvert(Type objectType) => typeof(CanonicalDataCase) == objectType;

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jToken = JToken.ReadFrom(reader);

            var canonicalDataCase = new CanonicalDataCase();
            serializer.Populate(new JTokenReader(jToken), canonicalDataCase);

            canonicalDataCase.Properties = jToken.ToObject<IDictionary<string, object>>();
            canonicalDataCase.Input = GetInputProperty(jToken);
            canonicalDataCase.ConstructorInput = new Dictionary<string, object>();

            return canonicalDataCase;
        }

        private static IDictionary<string, object> GetInputProperty(JToken jToken)
        {
            var allProperties = jToken.ToObject<IDictionary<string, object>>();

            foreach (var nonInputProperty in NonInputProperties)
                allProperties.Remove(nonInputProperty);

            return allProperties;
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => throw new NotImplementedException();
    }
}

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
trackler-2.2.1.27 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.26 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.25 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.24 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.23 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.22 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.21 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.20 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.19 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.18 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.17 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.16 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.15 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.14 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.13 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.12 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.11 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.10 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.9 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
trackler-2.2.1.8 tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs