首页 > 解决方案 > 忽略 Java Enum 的 Json 中的 getter

问题描述

这是我的枚举:

public enum BundleStatus {
    NEW,
    SUCCESS,
    CANCEL,
    FAIL,
    WAIT_CANCEL,
    PARTIAL_SUCCESS,
    PROCESSING,
    NO_FUNDS,
    HOLD_PAY,
    WAIT_PAY;

    public static final Set<BundleStatus> NO_ACTIVE_STATUSES = new HashSet<>(Arrays.asList(CANCEL, FAIL));

    public static final Set<BundleStatus> SUCCESS_STATUSES = new HashSet<>(Arrays.asList(SUCCESS, PARTIAL_SUCCESS));

    private static final Set<BundleStatus> FAIL_CANCEL_STATUSES = new HashSet<>(Arrays.asList(FAIL, WAIT_CANCEL, CANCEL));

    public static final Set<BundleStatus> STATUS_BUNDLE_FOR_EXECUTE_MAIN = new HashSet<>(
            Arrays.asList(SUCCESS, PARTIAL_SUCCESS, WAIT_CANCEL)
    );

    public static final Set<BundleStatus> STATUS_BUNDLE_FOR_EXECUTE_DEPENDENT = new HashSet<>(
            Arrays.asList(SUCCESS, PARTIAL_SUCCESS, WAIT_CANCEL, CANCEL, FAIL)
    );

    public static final Set<BundleStatus> STATUS_BUNDLE_FOR_GET_PRIMARY = new HashSet<>(
            Arrays.asList(PROCESSING, WAIT_CANCEL, SUCCESS, PARTIAL_SUCCESS)
    );

    public static final Map<String, BundleStatus> EVENT_TYPE_MAPPING = ImmutableMap.of(
            "noFunds", NO_FUNDS,
            "holdPay", HOLD_PAY
    );

    public static final Set<BundleStatus> WAITING_PAY_BUNDLE_STATUSES = new HashSet<>(
            Arrays.asList(WAIT_PAY, HOLD_PAY, NO_FUNDS));

    public boolean isFailCancel() {
        return FAIL_CANCEL_STATUSES.contains(this);
    }

    public boolean isFailCreate() {
        return NO_ACTIVE_STATUSES.contains(this);
    }

    public boolean isSuccessStatus() {
        return SUCCESS_STATUSES.contains(this);
    }

    public boolean isHasActivePayProcess() {
        return WAITING_PAY_BUNDLE_STATUSES.contains(this);
    }
}

当我尝试将其序列化为 JSON 对象时,我正在使用 map 获取对象,其中 key 是字段的名称(该对象是另一个类的字段),而 value 是包含所有布尔 getter 的数组:

{
"clientId":"siebel_id_one",
"code":"premium",
"newStatus":{"failCreate":false,"failCancel":false,"hasActivePayProcess":false,"successStatus":true}
}

我希望“newStatus”字段仅显示为"newStatus": "SUCCESS". 如何解决?

标签: javajsonenumsjacksonjackson-databind

解决方案


推荐阅读