我有以下JSON:
{
"lastOcurrences":[
{
"myString":"16726354"
},
{
"myString":"66728744"
},
{
"myString":"91135422"
}
]
}
我有一个要反序列化的类:
public class JsonObject
{
public List<LastOcurrence> LastOcurrences { get; set; }
}
public class LastOcurrence
{
public string MyString { get; set; }
}
在用JsonConvert.DeserializeObject<T>(json)
反序列化之后,我希望能够格式化字符串myString
,存储167-263-54
,而不是16726354
。
什么样的解决方案会让我的灵魂满意:使用属性上的属性,例如JsonConverter
, but ...
我要避免做的事情:我不想使用反射来遍历每个属性,而只是随后读取属性并应用格式。有什么方法可以JsonConvert
“自动”执行此操作吗?
答案 0 :(得分:0)
一种可能的解决方案是为此使用自定义getter和setter,当反序列化时,您保留原始数据。这将进行JIT格式化。根据此数据的使用,这可能会快得多,但是如果重复读取相同的数据很多,则速度可能会慢一些。
public class LastOcurrence
{
private string _myString;
public string MyString
{
get { return Regex.Replace(_myString, @"^(.{ 3})(.{ 3})(.{ 2})$", "$1-$2-$3"); }
set { _myString = value; }
}
}