我有以下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
,但是......
我想避免做的是:我不想使用反射来循环访问每个属性,然后才读取属性并应用格式。有没有办法用JsonConvert
"自动"执行此操作?
一种可能的解决方案是为此使用自定义 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; }
}
}