枚舉類(lèi)型的json序列化

自定義枚舉

package com.qingqing.live.bean.enums;

import com.google.common.collect.ImmutableList;

import java.util.List;

public enum MesosConstraint {

    node_voip("node",ConstraintType.EQUALS,"voip"),
    node_live("node",ConstraintType.EQUALS,"live");

    String attribute;

    ConstraintType type;

    String value;

    MesosConstraint(String attribute, ConstraintType type, String value){
        this.attribute = attribute;
        this.type = type;
        this.value = value;
    }

    public List<String> toList(){
        return ImmutableList.<String>builder()
                .add(attribute)
                .add(type.toString())
                .add(value)
                .build();
    }
}

枚舉類(lèi)型的序列化:

public class ConstraintSerializer extends JsonSerializer<Constraint> {

    @Override
  public void serialize(Constraint value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
        Optional<Constraint> data = Optional.of(value);
        if (data.isPresent()){
            jgen.writeObject(data.get().toList());
        } else {
            jgen.writeString("");
        }
    }
}

枚舉數(shù)組的序列化:

package com.qingqing.liverres.converter;

import com.google.common.base.Optional;
import com.qingqing.live.bean.enums.MesosConstraint;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.TypeSerializer;
import org.codehaus.jackson.map.ser.std.ContainerSerializerBase;
import org.codehaus.jackson.map.ser.std.StdArraySerializers;

import java.io.IOException;

public class MesosConstraintArraySerializer extends StdArraySerializers.ArraySerializerBase<MesosConstraint[]> {

    protected MesosConstraintArraySerializer() {
        super(MesosConstraint[].class, null, null);
    }

    @Override
    protected void serializeContents(MesosConstraint[] value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException {
        for (MesosConstraint constraint: value){
            Optional<MesosConstraint> data = Optional.of(constraint);
            if (data.isPresent()){
                jgen.writeObject(data.get().toList());
            } else {
                jgen.writeString("");
            }
        }
    }

    @Override
    public ContainerSerializerBase<?> _withValueTypeSerializer(TypeSerializer vts) {
        return this;
    }


}

使用的時(shí)候在get方法上添加上@JsonSerialize(using=MesosConstraintArraySerializer.class)就可以使用了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容