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

时间:2019-07-17 15:15:20

标签: c# json json.net

我有以下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“自动”执行此操作吗?

1 个答案:

答案 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; } 
    }
}