2018年12月24日 星期一

[C#][Json]讀Json處理小數點

讀JSON檔的時候,有些有小數的欄位太長
想去掉小數點,可以在Entity上面加converter
透過converter,取到的資料已經做好處理
參考範例如下

public class TestEntity {
    [JsonConverter(typeof(CustomDecimalNullConverter))]
    public decimal val {get; set;}
}


void Main() {   
    var settings = new JsonSerializerSettings();
    settings.Converters.Add(new CustomDecimalNullConverter());
    var result = JsonConvert.DeserializeObject>(json, settings);
}

// For completeness: A stupid example converter
class CustomDecimalNullConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(decimal);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
        {
            return 0m;
        }
        else
        {
            return Convert.ToDecimal(reader.Value);
        }
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteValue((decimal)value);
    }
}

Ref: https://stackoverflow.com/questions/51885268/custom-rule-for-deserializing-decimal-values-in-json-net
 

沒有留言:

張貼留言