整型到字符串的转换器
除非是单价、金额之类的参数,否则一般的int要转为字符串来使用,我个人认为是毫无必要的。但既然有这个要求,只能实现一个转换器来处理。
1 class UnwiseIntToStrConvert : JsonConverter 2 { 3 public override bool CanConvert(Type type) 4 { 5 return type.GetType().Equals(typeof(int)); 6 } 7 8 public override object ReadJson(JsonReader reader, Type type, object existingValue, JsonSerializer serializer) 9 { 10 Type t = IsNullable(type) ? Nullable.GetUnderlyingType(type) : type; 11 12 if (reader.TokenType.Equals(JsonToken.Null)) 13 { 14 return JsonToken.Null; 15 } 16 17 if (reader.Value.GetType().Equals(typeof(string))) 18 { 19 return Convert.ToInt32(reader.Value); 20 } 21 22 return reader.Value; 23 } 24 25 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 26 { 27 if (null == value) 28 { 29 writer.WriteValue("0"); 30 return; 31 } 32 33 if (value.GetType().Equals(typeof(int))) 34 { 35 writer.WriteValue(value.ToString()); 36 } 37 else 38 { 39 writer.WriteValue(value); 40 } 41 } 42 43 private bool IsNullable(Type t) 44 { 45 if (t.Equals(null)) 46 { 47 throw new ArgumentNullException("给定参数不能是NULL."); 48 } 49 return (t.BaseType.FullName == "System.ValueType" && t.GetGenericTypeDefinition() == typeof(Nullable<>)); 50 } 51 }
在属性标签中加入这个转换器
1 class Entity 2 { 3 public string Name { get; set; } 4 5 [JsonConverter(typeof(UnwiseIntToStrConvert))] 6 public int age { get; set; } 7 }

浙公网安备 33010602011771号