This repository was archived by the owner on Oct 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
enum_custom_serialization
高铁 edited this page Jan 8, 2017
·
7 revisions
fastjson支持在某些业务场景下,将Enum类型作为JavaBean序列化输出。
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);使用@JSONType配置Enum当做JavaBean序列化,需要1.2.24之后的版本
@JSONType(serializeEnumAsJavaBean = true)
public static enum OrderType {
PayOrder(1, "支付订单"), //
SettleBill(2, "结算单");
public final int value;
public final String remark;
private OrderType(int value, String remark) {
this.value = value;
this.remark = remark;
}
}直接修改SerializeConfig配置Enum当做JavaBean序列化,需要1.2.24之后的版本,这个方法的好处是不需要修改Enum类的代码
SerializeConfig serializeConfig = SerializeConfig.globalInstance;
serializeConfig.put(OrderType.class, serializeConfig.createJavaBeanSerializer(OrderType.class));如有需要修改本注脚,请联系阿里巴巴,
© Alibaba Fastjson Develop Team
注明: 版权所有阿里巴巴,请注明版权所有者
If you need to amend this footnote, please contact Alibaba.
© Alibaba Fastjson Develop Team
Note: Copyright Alibaba, please indicate the copyright owner