How do I change the default Type for Numeric deserialization?

后端 未结 4 1718
抹茶落季
抹茶落季 2020-11-30 05:10

I\'m deserializing some properties to a Dictionary.

When I deserialize some json, it populates the Dictionary with <

4条回答
  •  野性不改
    2020-11-30 05:37

    This is working well for me:

    public class ParseNumbersAsInt32Converter : JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return objectType == typeof(long) || objectType == typeof(long?) || objectType == typeof(object);
        }
    
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            serializer.Serialize(writer, value);
        }
    
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.Value != null && reader.Value is long)
            {
                return Convert.ToInt32(reader.Value);
            }
            return reader.Value;
        }
    }
    

提交回复
热议问题