我正在使用 Json.net 4.5。我正在使用 JsonConverter 将数据从一个版本转换为另一个版本。
版本 1
public class AV1
{
public string PNr { get; set; } // "x253yN-69Uj"
}
版本 2
public class AV2
{
public string FirstNr { get; private set; } // "x253yN"
public string LastNr { get; private set; } // "69Uj"
public void SetFirstAndLastNr(string a, string b, string c)
{
//Logic to set the values of FirstNr and LastNr
}
}
在派生的 JsonConverter 中,我正在创建AV2
类的实例。但是,由于属性现在是只读属性,因此我应该如何设置这些属性的值?Json.net 是否提供了任何方法来做同样的事情?还是我必须使用反射?
反序列化只读属性,也许试试这个
public class AV2
{
[JsonProperty]
private readonly string _firstNr;
[JsonProperty]
private readonly string _lastNr;
public string FirstNr => _firstNr// "x253yN"
public string LastNr => _lastNr// "69Uj"
}
正如您所说,您有数百个不同的类需要转换,JsonDeserializer
可能不是最佳选择。
查看其他解决方案(如AutoMapper)并不是一个坏主意:http://automapper.org/,https://github.com/AutoMapper/AutoMapper
如果您花一两个小时查看示例代码,您会发现将不同的对象相互转换(映射)非常强大和灵活。