美文网首页
修改传输数据类型

修改传输数据类型

作者: jianshuqiang | 来源:发表于2019-07-07 23:06 被阅读0次

    在项目开发中需要多数以json的数据格式向后台传输数据以及在页面中展示数据,但是还有一些需要xml或者peoperties等
    Accept:告诉服务器,客户端支持的数据类型。
    Content-Type:服务器通过这个头,接收的数据的类型

    一、全部转换为在页面中以xml的形式展示

    以xml的形式展示需要先有解析包,解析包根据实际情况而定

    //扩展信息转换类
    @Slf4j
    @Configuration
    public class MyWebconfig implements WebMvcConfigurer {
        @Override
        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
            log.info("converters:"+converters.size());
    //使用xml作为第一解析方式
            converters.add(0,new MappingJackson2XmlHttpMessageConverter());
     
        }
    }
    

    二、解析某一个具体的类

    1、定义自定义自媒体解析方式

    public class MyMessageConverter extends AbstractHttpMessageConverter<Person> {
        public MyMessageConverter(){
            super(MediaType.valueOf("application/properties-person"));
            setDefaultCharset(Charset.forName("UTF-8"));
        }
        @Override
        protected boolean supports(Class<?> aClass) {
            return aClass.isAssignableFrom(Person.class);
        }
    
        @Override
        protected Person readInternal(Class<? extends Person> aClass, HttpInputMessage httpInputMessage) throws IOException, HttpMessageNotReadableException {
            InputStream body = httpInputMessage.getBody();
            Properties properties=new Properties();
            properties.load(body);
            Person person=new Person();
            person.setAge(Integer.valueOf(properties.getProperty("person.age")));
            person.setName(properties.getProperty("person.name"));
            return person;
        }
    
        @Override
        protected void writeInternal(Person person, HttpOutputMessage httpOutputMessage) throws IOException, HttpMessageNotWritableException {
            OutputStream body = httpOutputMessage.getBody();
            Properties properties=new Properties();
            properties.setProperty("person.age",String.valueOf(person.getAge()));
            properties.setProperty("person.name",person.getName());
            properties.store(new OutputStreamWriter(body,getDefaultCharset()),"niahi");
        }
    }
    

    测试

    //consumes :Content-type
    //produces :Accept
      @PostMapping(value = "/person/json/to/proper",
                consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
                produces = "application/properties-person")//Accept
        public Person person(@RequestBody Person person) {
            return person;
        }
    
        @PostMapping(value = "/person/proper/to/json",
                consumes = "application/properties-person",//
                produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public Person person2(@RequestBody Person person) {
            return person;
        }
    

    测试


    image.png image.png

    相关文章

      网友评论

          本文标题:修改传输数据类型

          本文链接:https://www.haomeiwen.com/subject/yccwhctx.html