指定JSONObject.toJSONString中实体类属性的输出顺序

729 阅读1分钟

有时候为了json方便查看,先后顺序尤为重要。

@Data
public class MsgRuleLabelReq {
    private String labelName;
    private List<MsgRuleItem> items;

    @Data
//    @JSONType(orders = {"ruleParams", "comparator", "value"})
    public static class MsgRuleItem {
        private MsgRuleParam ruleParams;
        private String comparator;//约束条件
        private String value;//约束值
    }

    @Data
    public static class MsgRuleParam {
        private String argument;//条件名
        private String explain;//描述
    }
}

输出结果:

{"comparator":"等于","ruleParams":{"argument":"条件一","explain":"描述一"},"value":"值一"}

下面使用JSONObject.toJSONString对实体类属性输出排序。

@Data
public class MsgRuleLabelReq {
    private String labelName;
    private List<MsgRuleItem> items;

    @Data
    @JSONType(orders = {"ruleParams", "comparator", "value"})//先后顺序从前到后
    public static class MsgRuleItem {
        private MsgRuleParam ruleParams;
        private String comparator;//约束条件
        private String value;//约束值
    }

    @Data
    public static class MsgRuleParam {
        private String argument;//条件名
        private String explain;//描述
    }
}

输出结果:

{"ruleParams":{"argument":"条件一","explain":"描述一"},"comparator":"等于","value":"值一"}