JsonConstructor 不被尊重



我有一个类,我试图通过 Json.NET 反序列化:

public class JobStatus
{
    [JsonConstructor]
    protected JobStatus()
    {
    }
    protected internal JobStatus( AzureBlobFile blobFile )
    {
        if( blobFile == null )
            throw new ArgumentNullException(nameof( blobFile ));
    }
}

反序列化按如下方式触发:

JsonSerializerSettings jsonSettings = new JsonSerializerSettings()
{
    TypeNameHandling = TypeNameHandling.All,
    ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};
List<AzureBlobFile> blobFiles = blobFolder.GetBlobFiles();
if( blobFiles == null ) return null;
string text = blobFiles.First().DownloadText();
JobStatus junk = JsonConvert.DeserializeObject<JobStatus>( text, jsonSettings );

对 DeserializeObject() 的调用总是失败,因为它调用参数化的构造函数,而不是用 JsonConstructor 属性修饰的非参数化构造函数。

我是否错误地使用了该属性?

我的错:问题是由于TypeNameHandlling是有效的,并且JobStatus是一个父类,每个子类(JobStatus -> BatchJobStatus -> AgencyJobStatus [未显示])也必须具有无参数构造函数以供 Json.NET 使用。

相关内容

  • 没有找到相关文章

最新更新