JSON.NET 反序列化 JSON,然后格式化字符串



我有以下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; } 
}
}

最新更新