【问题标题】:Json.NET JsonSerializationException for property with JsonIgnoreAttribute具有 JsonIgnoreAttribute 的属性的 Json.NET JsonSerializationException
【发布时间】:2018-06-03 02:51:20
【问题描述】:

我收到异常:

Newtonsoft.Json.JsonSerializationException:检测到类型为“DbGet.Service.Auth.AuthUserRegisterSagaData”的自引用循环。路径“Tenant.CanRollback”。

    internal class AuthUserRegisterSagaData : ContainSagaData
{
    public AuthUserRegisterSagaData()
    {
        Tenant = new MultipartEntitySagaData<TenantEntity>();
        TenantUser = new MultipartEntitySagaData<TenantUserEntity>();
        Workspace = new MultipartEntitySagaData<WorkspaceEntity>();
        Workspace.CanRollback = () => true;
        TenantUser.CanRollback = () => Workspace.RollbackCommandStatus == CommandStatusEnum.Completed;
        Tenant.CanRollback = () => TenantUser.RollbackCommandStatus == CommandStatusEnum.Completed;
    }

    public string Email { get; set; }

    /// <summary>
    /// Is User Entity saved
    /// </summary>
    public bool IsUserCreated { get; set; }

    public Guid UserId { get; set; }

    public IdentityUserEntity Entity { get; set; }

    public MultipartEntitySagaData<TenantEntity> Tenant { get; set; }

    public MultipartEntitySagaData<TenantUserEntity> TenantUser { get; set; }

    public MultipartEntitySagaData<WorkspaceEntity> Workspace { get; set; }
}

public class MultipartEntitySagaData<TEntity>: MultipartSagaData
{
    public TEntity Entity { get; set; }      
}

public class MultipartSagaData
{
    public CommandStatusEnum CommandStatus { get; set; }

    public CommandStatusEnum RollbackCommandStatus { get; set; }

    [JsonIgnore]
    public Func<bool> CanRollback { get; set; }
}

我不明白为什么,因为我将此属性标记为不可序列化。

【问题讨论】:

    标签: json json.net


    【解决方案1】:

    你能展示一些你正在序列化的代码吗?是那3个班还是更少?如果您也在序列化内部类,那么在我看来,租户(将被序列化)在构造函数中给出了问题。

    这里有同样错误的链接。希望它会有所帮助。 Same error

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 1970-01-01
      • 2021-05-14
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多