您可以使用这样的自定义
JsonConverter类来处理两种格式(JSON数字表示形式和掩码字符串格式)。
class DecimalConverter : JsonConverter{ public override bool CanConvert(Type objectType) { return (objectType == typeof(decimal) || objectType == typeof(decimal?)); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JToken token = JToken.Load(reader); if (token.Type == JTokenType.Float || token.Type == JTokenType.Integer) { return token.ToObject<decimal>(); } if (token.Type == JTokenType.String) { // customize this to suit your needs return Decimal.Parse(token.ToString(), System.Globalization.CultureInfo.GetCultureInfo("es-ES")); } if (token.Type == JTokenType.Null && objectType == typeof(decimal?)) { return null; } throw new JsonSerializationException("Unexpected token type: " + token.Type.ToString()); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { throw new NotImplementedException(); }}要将其插入到活页夹中,只需将转换器的一个实例添加到对象的
Converters列表中
JsonSerializerSettings:
JsonSerializerSettings settings = new JsonSerializerSettings{ NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, Formatting = Formatting.None, DateFormatHandling = DateFormatHandling.IsoDateFormat, Converters = new List<JsonConverter> { new DecimalConverter() }};


