예제 #1
0
        public override string?ReadJson(
            JsonReader reader,
            Type objectType,
            string?existingValue,
            bool hasExistingValue,
            JsonSerializer serializer)
        {
            if (objectType == typeof(string))
            {
                DelimitedStringConverterOptions options = GetOptions(serializer);
                string?output = null;
                if (options.HasFlag(DelimitedStringConverterOptions.JsonStringArrayNotString) &&
                    reader.TokenType == JsonToken.StartArray)
                {
                    StringBuilder builder = new StringBuilder();
                    while (reader.Read() && reader.TokenType == JsonToken.String && !(reader.Value is null))
                    {
                        if (builder.Length > 0)
                        {
                            builder.Append(" ");
                        }

                        builder.Append((string)reader.Value);
                    }

                    output = builder.ToString();
                }
                else if (!options.HasFlag(DelimitedStringConverterOptions.JsonStringArrayNotString) &&
                         reader.TokenType == JsonToken.String &&
                         !(reader.Value is null))
                {
                    output = (string)reader.Value;
                }

                return(output);
            }

            throw new NotSupportedException($"The type {objectType} is not supported.");
        }
예제 #2
0
        public override void WriteJson(JsonWriter writer, string?value, JsonSerializer serializer)
        {
            DelimitedStringConverterOptions options = GetOptions(serializer);

            if (value is null)
            {
                writer.WriteNull();
            }
            else if (options.HasFlag(DelimitedStringConverterOptions.JsonStringArrayNotString))
            {
                string[] elementList = value.Split(" ");
                writer.WriteStartArray();
                foreach (string element in elementList)
                {
                    writer.WriteValue(element);
                }

                writer.WriteEndArray();
            }
            else
            {
                writer.WriteValue(value);
            }
        }
예제 #3
0
 public DelimitedStringNullableConverter(DelimitedStringConverterOptions activeOptions) : base(activeOptions)
 {
 }
예제 #4
0
 public DelimitedStringGenericConverter(DelimitedStringConverterOptions activeOptions) : base(activeOptions)
 {
 }