Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

enum_custom_serialization

高铁 edited this page Jul 1, 2016 · 7 revisions
public static class Model {
    public int id;
    public OrderType orderType;
}

public static enum OrderType implements JSONSerializable {
                              PayOrder(1, "支付订单"), //
                              SettleBill(2, "结算单");

    public final int    value;
    public final String remark;

    private OrderType(int value, String remark){
        this.value = value;
        this.remark = remark;
    }

    @Override
    public void write(JSONSerializer serializer, Object fieldName, Type fieldType,
                      int features) throws IOException {
        JSONObject json = new JSONObject();
        json.put("value", value);
        json.put("remark", remark);
        serializer.write(json);
    }

}

效果

Model model = new Model();
model.id = 1001;
model.orderType = OrderType.PayOrder;
String text = JSON.toJSONString(model);
Assert.assertEquals("{\"id\":1001,\"orderType\":{\"remark\":\"支付订单\",\"value\":1}}", text);
Clone this wiki locally