Fastjson1xWriterModule.java

package com.alibaba.fastjson;

import com.alibaba.fastjson2.JSONWriter;
import com.alibaba.fastjson2.modules.ObjectWriterModule;
import com.alibaba.fastjson2.writer.ObjectWriter;
import com.alibaba.fastjson2.writer.ObjectWriterProvider;

import java.lang.reflect.Type;

public class Fastjson1xWriterModule
        implements ObjectWriterModule {
    final ObjectWriterProvider provider;

    public Fastjson1xWriterModule(ObjectWriterProvider provider) {
        this.provider = provider;
    }

    @Override
    public ObjectWriter getObjectWriter(Type objectType, Class objectClass) {
        if (objectClass != null
                && JSONAware.class.isAssignableFrom(objectClass)
                && JSONArray.class != objectClass
                && JSONObject.class != objectClass
        ) {
            return JSONAwareWriter.INSTANCE;
        }

        return null;
    }

    static class JSONAwareWriter
            implements ObjectWriter {
        static final JSONAwareWriter INSTANCE = new JSONAwareWriter();

        @Override
        public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) {
            if (object == null) {
                jsonWriter.writeNull();
                return;
            }

            JSONAware jsonAware = (JSONAware) object;
            String str = jsonAware.toJSONString();
            jsonWriter.writeRaw(str);
        }
    }
}