Springboot------fastjsonカスタムシーケンス化と逆シーケンス化

1082 ワード

一:fastjsonのカスタムシーケンス化


classを定義する->ObjectSerializerインタフェースを実装する->カスタムclassでデータのシーケンス化を操作できます
/**
 *  objectId 
 */
public class ObjectIdSerializer implements ObjectSerializer {

    @Override
    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
        SerializeWriter out = serializer.out;

        if (object instanceof ObjectId) {
            ObjectId objectId = (ObjectId) object;
            out.writeString(objectId.toString());
            return;
        }
    }
}

二:fastjsonのカスタム逆シーケンス化


classを定義する->ObjectDeserializerインタフェースを実装する->カスタムclassでデータの逆シーケンス化を操作できます
public class ObjectIdDeserializer implements ObjectDeserializer{

    @Override
    public ObjectId deserialze(DefaultJSONParser parser, Type type, Object fieldname){

        String idString = parser.getLexer().stringVal();
        return new ObjectId(idString);
    }


    @Override
    public int getFastMatchToken(){return 0;}
}