4

我正在使用 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 是否提供任何方法来做同样的事情?还是我必须使用反射?

4

2 回答 2

1

如果你想反序列化只读属性,也许试试这个

public class AV2
{
    [JsonProperty]
    private readonly string _firstNr;
    [JsonProperty]
    private readonly string _lastNr;
    public string FirstNr => _firstNr// "x253yN"
    public string LastNr => _lastNr// "69Uj"


}
于 2018-06-19T08:31:25.770 回答
-4

正如您所说,您有数百个不同的类需要转换,JsonDeserializer可能不是最佳选择。

看看AutoMapper等其他解决方案不是一个坏主意:http ://automapper.org/、https : //github.com/AutoMapper/AutoMapper

如果您花一两个小时查看示例代码,您会发现将不同的对象相互转换(映射)是如此强大和灵活。

于 2013-06-28T01:52:39.320 回答