// Path: SpringBoot-FastJson/src/main/java/com/lengchuan/springBoot/converter/EncrypConverter.java
// public class EncrypConverter extends FastJsonHttpMessageConverter4 {
// 
//     /**
//      * 重写read()方法
//      *
//      * @param type
//      * @param contextClass
//      * @param inputMessage
//      * @return
//      * @throws IOException
//      * @throws HttpMessageNotReadableException
//      */
//     @Override
//     public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
//         InputStream in = inputMessage.getBody();
//         byte[] data = Base64.decode(IOUtils.toString(in, "UTF-8"));
//         return JSON.parseObject(data, 0, data.length, getFastJsonConfig().getCharset(), type, getFastJsonConfig().getFeatures());
//     }
// 
//     /**
//      * 重写readInternal
//      *
//      * @param clazz
//      * @param inputMessage
//      * @return
//      * @throws IOException
//      * @throws HttpMessageNotReadableException
//      */
//     @Override
//     protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
// 
//         InputStream in = inputMessage.getBody();
//         byte[] data = Base64.decode(IOUtils.toString(in, "UTF-8"));
//         return JSON.parseObject(data, 0, data.length, getFastJsonConfig().getCharset(), clazz, getFastJsonConfig().getFeatures());
//     }
// 
// 
//     /**
//      * 重写writeInternal()方法
//      *
//      * @param obj
//      * @param type
//      * @param outputMessage
//      * @throws IOException
//      * @throws HttpMessageNotWritableException
//      */
//     @Override
//     protected void writeInternal(Object obj, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
//         String s = Base64.encode(JSON.toJSONBytes(obj));
//         HttpBody httpBody = new HttpBody();
//         httpBody.setStatus(1);
//         httpBody.setBody(s);
//         super.writeInternal(httpBody, type, outputMessage);
//     }
// }


import com.lengchuan.springBoot.converter.EncrypConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
package com;


/**
 * @author lengchuan <lishuijun1992@gmail.com>
 * @date 17-3-28
 */
@SpringBootApplication
public class App {

//    @Bean
//    HttpMessageConverters setFastJsonConverter() {
//        return new HttpMessageConverters(new FastJsonConverter());
//    }

    @Bean
    HttpMessageConverters fastJsonHttpMessageConverters() {
// Path: SpringBoot-FastJson/src/main/java/com/lengchuan/springBoot/converter/EncrypConverter.java
// public class EncrypConverter extends FastJsonHttpMessageConverter4 {
// 
//     /**
//      * 重写read()方法
//      *
//      * @param type
//      * @param contextClass
//      * @param inputMessage
//      * @return
//      * @throws IOException
//      * @throws HttpMessageNotReadableException
//      */
//     @Override
//     public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
//         InputStream in = inputMessage.getBody();
//         byte[] data = Base64.decode(IOUtils.toString(in, "UTF-8"));
//         return JSON.parseObject(data, 0, data.length, getFastJsonConfig().getCharset(), type, getFastJsonConfig().getFeatures());
//     }
// 
//     /**
//      * 重写readInternal
//      *
//      * @param clazz
//      * @param inputMessage
//      * @return
//      * @throws IOException
//      * @throws HttpMessageNotReadableException
//      */
//     @Override
//     protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
// 
//         InputStream in = inputMessage.getBody();
//         byte[] data = Base64.decode(IOUtils.toString(in, "UTF-8"));
//         return JSON.parseObject(data, 0, data.length, getFastJsonConfig().getCharset(), clazz, getFastJsonConfig().getFeatures());
//     }
// 
// 
//     /**
//      * 重写writeInternal()方法
//      *
//      * @param obj
//      * @param type
//      * @param outputMessage
//      * @throws IOException
//      * @throws HttpMessageNotWritableException
//      */
//     @Override
//     protected void writeInternal(Object obj, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
//         String s = Base64.encode(JSON.toJSONBytes(obj));
//         HttpBody httpBody = new HttpBody();
//         httpBody.setStatus(1);
//         httpBody.setBody(s);
//         super.writeInternal(httpBody, type, outputMessage);
//     }
// }


// Path: SpringBoot-FastJson/src/main/java/com/App.java
import com.lengchuan.springBoot.converter.EncrypConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;

package com;


/**
 * @author lengchuan <lishuijun1992@gmail.com>
 * @date 17-3-28
 */
@SpringBootApplication
public class App {

//    @Bean
//    HttpMessageConverters setFastJsonConverter() {
//        return new HttpMessageConverters(new FastJsonConverter());
//    }

    @Bean
    HttpMessageConverters fastJsonHttpMessageConverters() {
        return new HttpMessageConverters(new EncrypConverter());