如何在 JsonConverter 中设置 Json.net 只读属性值



我正在使用 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

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

相关内容

  • 没有找到相关文章

最新更新