整型到字符串的转换器

除非是单价、金额之类的参数,否则一般的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 }

 

 

 

posted @ 2022-06-08 12:06  初壹  阅读(47)  评论(0)    收藏  举报