精华内容
下载资源
问答
  • 类型转换器springboot

    2021-09-17 15:21:46
    类型转换器有两种: key-value 形式上传数据的类型转换 json形式上传数据的类型转换 json默认的解析日期格式为 yyyy-MM-dd key-value 默认的解析日期格式为 : yyyy/MM/dd springboot 操作key-value数据类型转换 ...

    类型转换器有两种:

    1. key-value 形式上传数据的类型转换
    2. json形式上传数据的类型转换

    json默认的解析日期格式为 yyyy-MM-dd
    key-value 默认的解析日期格式为 : yyyy/MM/dd

    springboot 操作key-value数据类型转换

    第一种方法:

    • 配置文件中设置 spring.mvc.format.date = xxx
      spring:
      	mvc:
      	 format:
       		 date: yyyy-MM-dd
      

    第二种方法:

    • 配置类型转换器,实现Converter<S,T>接口
    	@Component
    	public class String2DateConverter implements Converter<String, Date> {
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        @Override
        public Date convert(String s) {
            try {
            Date date = sdf.parse(s);
            return date;
            } catch (ParseException e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    

    但是这两种对json数据的转换无效

    springbooot设置json数据类型转换

    第一种:

    • 在springboot配置文件中设置
      spring:
      	 jackson:
      		 date-format: yyyy/MM/dd
      

    第二种:

    • 使用@JsonFormat注解
      @JsonFormat(pattern = "yyyy/MM/dd")
      private Date birthday;
      

    第三种:

    • 自己配置一个类型转换器继承 JsonDeserializer
    @JsonComponent
    public class JsonDateDeserializer extends JsonDeserializer<Date> {
        @Override
        public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
            String dateAsString = jsonParser.getText();
            try {
              return new SimpleDateFormat("yyyy/MM/dd").parse(dateAsString);
            } catch (ParseException e) {
                throw new IllegalArgumentException(e.getCause());
            }
        }
    }
    

    引用:https://blog.csdn.net/evalsys/article/details/102935836
    https://blog.csdn.net/weixin_33705053/article/details/89649399

    展开全文
  • JsonjsonSpringBoot中的格式转换

    千次阅读 多人点赞 2020-11-11 15:13:50
    文章目录@RestController自动返回json@ResponseBody+@Controller 组合返回json在pom.xml 添加 阿里巴巴json jar包封装json在entiy的body返回msgJsonResponseServletcontroller @RestController自动返回json /** *...

    @RestController自动返回json

    在这里插入图片描述

        /**
         * json 三种实现方法
         * 1 @RestController自动返回json
         */
        @GetMapping("/json")
        public Student getjson() {
            Student student = new Student("bennyrhys",158
            );
            return student;
        }
    

    @ResponseBody+@Controller 组合返回json

    在这里插入图片描述

    //@RestController
        @Controller
    // 类名上方
    
    
        @GetMapping("/json")
        @ResponseBody
        public Student getjson() {
            Student student = new Student("bennyrhys",158
            );
            return student;
        }
    

    在pom.xml 添加 阿里巴巴json jar包

    在这里插入图片描述

    //@RestController
        @Controller
    // 类名上方
    
    
    @GetMapping("/fastjson")
        public void fastjson(HttpServletResponse response){
            Student student = new Student("bennyrhys",158);
            String data = JSON.toJSONString(student);
    
    
            try {
                sendJsonData(response, data);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        protected void sendJsonData(HttpServletResponse response, String data) throws IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            out.println(data);
            out.flush();
            out.close();
        }
    
    

    fastjson深入理解
    fastJson对于json格式字符串的解析主要用到了一下三个类:

    JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
    JSONObject:fastJson提供的json对象。
    JSONArray:fastJson提供json数组对象。

    toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。

    允许转换预先存在的无法修改的对象(只有class、无源代码)。
    Java泛型的广泛支持。
    允许对象的自定义表示、允许自定义序列化类。
    支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

    JSONObject 当成一个 Map<String,Object> 来看
    JSONArray当成一个 List 来看
    JSON.toString(Object)----> return String
    JSON.parse(String)----->return Object

    String 和 JsonObject 和 JsonArray之间转化
    https://www.cnblogs.com/ljangle/p/11047111.html

    1、String转JSONObject 或 JSONArray
    JSONObject jSONObject = JSONObject.parseObject(String);
    JSONArray jsonArray= JSONArray.parseArray(String);

    2、JSONObject中的数组提取为JSONArray
    提取Result对应的数组
    JSONArray jsonArray= jsonObject.getJSONArray(“Result”);

    3、JSONArray提取为JSONObject
    JSONObject jsonObject = jsonArray.getJSONObject(0);
    在这里插入图片描述4、JSONObject获取value

    1、object.getString("key")
    
    2、object.get("key")
    

    JSONArray jsonArray= jsonObject.getJSONArray(“Result”);
    JSONObject jsonObject = jsonArray.getJSONObject(0);

    封装json在entiy的body返回msg

    ResponseEntity可以定义返回的HttpStatus(状态码)和HttpHeaders(消息头:请求头和响应头)

    HttpStatus(状态码)https://blog.csdn.net/csdn1844295154/article/details/78980174

    HttpHeaders(消息头:请求头和响应头)https://www.cnblogs.com/honghong87/articles/6941436.html

    具体查看这些内容的用法可以参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition

    ResponseEntity返回body

    JsonResponseServlet

    
    import java.io.Serializable;
    
    public class JsonResponse<T> implements Serializable {
        private Integer code;
        private String msg;
        private T result;
    
        public JsonResponse() {
        }
    
        public JsonResponse(Integer code, String msg, T result) {
            this.code = code;
            this.msg = msg;
            this.result = result;
        }
    
        public Integer getCode() {
            return code;
        }
    
        public void setCode(Integer code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public T getResult() {
            return result;
        }
    
        public void setResult(T result) {
            this.result = result;
        }
    
        public static class JsonResponseUtil {
            public static JsonResponse<Object> ok() {
                return ok(null);
            }
    
            public static <T> JsonResponse<T> ok(T result) {
                return new JsonResponse<>(0, "", result);
            }
    
            public static JsonResponse<Object> error(Integer code) {
                return error(code, "error!");
            }
    
            public static JsonResponse<Object> error(String msg) {
                return error(-1, msg);
            }
    
            public static JsonResponse<Object> error(Integer code, String msg) {
                return new JsonResponse<>(code, msg, null);
            }
        }
    }
    

    controller

            return ResponseEntity.ok(JsonResponse.JsonResponseUtil.ok(source));
    
    
    展开全文
  • SpringBoot默认的JSON转换器为Jackson2,要修改为fastjson,网上大概有两种方法: 一、继承WebMvcConfigurer @Configuration public class MyWebConfig implements WebMvcConfigurer { //消息格式转换 @...

    SpringBoot默认的JSON转换器为Jackson2,要修改为fastjson,网上大概有两种方法:

    一、继承WebMvcConfigurer

    @Configuration
    public class MyWebConfig implements WebMvcConfigurer {
        //消息格式转换
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            //1.需要定义一个convert转换消息的对象;
            FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
            //2.添加fastJson的配置信息,比如:是否要格式化返回的json数据;
            FastJsonConfig fastJsonConfig = new FastJsonConfig();
            fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
                    SerializerFeature.WriteMapNullValue,
                    SerializerFeature.WriteNullStringAsEmpty,
                    SerializerFeature.DisableCircularReferenceDetect,
                    SerializerFeature.WriteNullListAsEmpty,
                    SerializerFeature.WriteDateUseDateFormat);
            //3处理中文乱码问题
            List<MediaType> fastMediaTypes = new ArrayList<>();
            fastMediaTypes.add(MediaType.valueOf("application/json;charset=UTF-8"));
            //4.在convert中添加配置信息.
            fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
            fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
            //5.将convert添加到converters当中.
            converters.add(fastJsonHttpMessageConverter);
        }
    }

    此方法有一个问题,如果不加@EnableWebMvc注解就不会起作用,但如果加上此注解就会覆盖springboot默认的webmvc配置,从而导致默认的静态资源路径失效,静态资源无法访问。

    我又加上自己的静态资源地址

    @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**")
                    .addResourceLocations("classpath:/static/");
        }

    但还是无法找到js和css文件。所以我改用第二种方式

    二、用bean替代默认解析器

    @Configuration
    public class MyWebConfig {
        @Bean
        public HttpMessageConverters fastJsonMessageConverters() {
            List<HttpMessageConverter<?>> converters = new ArrayList<>();
            //需要定义一个convert转换消息的对象;
            FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
            //添加fastJson的配置信息;
            FastJsonConfig fastJsonConfig = new FastJsonConfig();
            fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
            //全局时间配置
            fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
            fastJsonConfig.setCharset(Charset.forName("UTF-8"));
            //处理中文乱码问题
            List<MediaType> fastMediaTypes = new ArrayList<>();
            fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
            //在convert中添加配置信息.
            fastConverter.setSupportedMediaTypes(fastMediaTypes);
            fastConverter.setFastJsonConfig(fastJsonConfig);
    
            converters.add(0, fastConverter);
            return new HttpMessageConverters(converters);
        }
    }

    此方法测试没问题,在对象属性上加上

    @JSONField(serialize = false)

    成功!

    展开全文
  • 默认转换器 JSON是目前主流的前后端数据传输方式。创建一个Spring Boot项目后,添加web依赖后,依赖中默认加入了jackson-databind作为JSON处理器,此时不需要添加额外的JSON处理器就能返回一段JSON。 下面是一个...

    默认转换器

    JSON是目前主流的前后端数据传输方式。创建一个Spring Boot项目后,添加web依赖后,依赖中默认加入了jackson-databind作为JSON处理器,此时不需要添加额外的JSON处理器就能返回一段JSON。

    • 下面是一个示例。

    Book实体类

    @Data
    public class Book {
        private String name;
        private String author;
        @JsonIgnore
        private Float price;
        @JsonFormat(pattern="yyyy-MM-dd")
        private Date publicationDate;
    }
    

    创建BookController,返回Book对象

    @Controller
    public class BookController {
        @GetMapping("/book")
        @ResponseBody
        public Book book(){
            Book book = new Book();
            book.setAuthor("罗贯中");
            book.setName("三国演义");
            book.setPrice(30f);
            book.setPublicationDate(new Date());
            return book;
        }
    }
    
    • BookController的另一种写法
    @RestController
    public class BookController {
        @GetMapping("/book")
        public Book book(){
            Book book = new Book();
            book.setAuthor("罗贯中");
            book.setName("三国演义");
            book.setPrice(30f);
            book.setPublicationDate(new Date());
            return book;
        }
    }
    
    • 两者区别在于采用@RestController组合注解代替@Controller和@ResponseBody

    自定义转换器Gson

    • Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON字符串转成一个 Java 对象,或者反过来。
    • 使用Gson需要先去除默认的jackson-databind,然后再加入Gson依赖。具体如下:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>
    

    Book实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Book {
        private String name;
        private String author;
        protected Float price;
        private Date publicationDate;
    }
    

    创建BookController,返回Book对象

    @RestController
    public class BookController {
        @GetMapping("/book")
        public Book book(){
            Book book = new Book();
            book.setAuthor("罗贯中");
            book.setName("三国演义");
            book.setPrice(30f);
            book.setPublicationDate(new Date());
            return book;
        }
    }
    

    创建Gson的配置类,注入Bean

    @Configuration
    public class GsonConfig {
        @Bean
        //自己提供一个GsonHttpMessageConverter的实例
        GsonHttpMessageConverter gsonHttpMessageConverter(){
            GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
            GsonBuilder builder = new GsonBuilder();
            //设置Gson解析时日期的格式
            builder.setDateFormat("yyyy-MM-dd");
            //设置Gson解析时修饰符为protected的字段被过滤掉
            builder.excludeFieldsWithModifiers(Modifier.PROTECTED);
            //创建Gson对象放入GsonHttpMessageConverter的实例中并返回converter
            Gson gson = builder.create();
            converter.setGson(gson);
            return converter;
        }
    }
    

    上述使用默认JSON解析器jackson-databind和使用Gson达到的效果一样,即返回的json数据是一样的。

    展开全文
  • springboot应用中,@RestController注解的json默认序列化中,日期格式默认为:2020-12-03T15:12:26.000+00:00类型的显示。 在实际显示中,我们需要对其转换成我们需要的显示格式。 方式1:配置文件修改 配置文件...
  • 会将后台返回的Java对象转换Json字符串传递给前台。而spring默认使用的是jackson来做json序列化,相对应的converter是MappingJackson2HttpMessageConverter,如果想修改jackson转json的部分特性,我们可以在启动类...
  • springboot-json转换

    千次阅读 2020-01-07 16:17:53
    springbootjson数据传输 后台返回对象,前台得到为json格式 前台请求数据为json,后台自动封装为对象 Jackson springboot中默认依赖了spring-boot-starter-json,所以我们可以不用再进行配置就可以使用。 但是...
  • 碰到的问题:1,在JSP页面中里面ajax传json值到后台2,后台收到ajax的值后,根据收到的值做相应的处理后把值传到页面,并完成页面的跳转之前一直测试不成功,为了排除干扰因为,先用最简单的数据来 &...
  • SpringBoot 系列教程(六十七):SpringBoot自定义Fastjson作为JSON消息转换器 一、关于 fastJson fastJson为alibaba旗下的一款开源项目,从其命名可以看出,其意图是专门用来做快速操作Json的序列化与反序列化的组件...
  • SpringBoot中的JSON实现 JSON是目前主流的前后端数据...一、SpringBoot自带的JSON转换器SpringBoot中添加web依赖 <dependency> <groupId>org.springframework.boot<groupId> <artifact...
  • SpringbootJson转换工具

    千次阅读 2018-12-16 13:39:27
    HttpClient请求数据后是json字符串,需要我们自己把Json字符串反序列化为对象,我们会使用JacksonJson工具来实现。 JacksonJson是SpringMVC内置的json处理工具,其中有一个ObjectMapper类,可以方便的实现对json的...
  • SpringBoot中使用Fastjson作为json消息的转换器 后续补上。。。。。。。。。。。。
  • 这篇文章主要介绍了详解jsonSpringBoot中的格式转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧@RestController自动返回json ...
  • Spring Boot之自定义JSON转换器

    千次阅读 2019-04-28 12:21:50
    在目前的项目开发中,常见的JSON转换器有三种(json-lib由于自身的缺陷基本不用,最广泛的还是Jackson): Jackson 在springboot中默认添加了jackson-databind作为JSON的处理器,不需要配置其他处理器。如果开发者...
  • 另外我的jdk是jdk1.6并且springboot版本是1.5.3.RELEASE,希望可以帮助到别人 最后上json转换配置类 package com.are.yuecloud.cpsp.spa.config; import com.alibaba.fastjson.serializer.SerializerFeature; import ...
  • Spring Boot 引用了 JSON 解析包 Jackson,如果我想引入其他的json转换包,该如何修改呢 接下来改成 json 框架是 fastjson 方法一: 在pom.xml中加入依赖, <dependency> <groupId>com.alibaba</...
  • SpringBootJson转换大小写的坑

    千次阅读 2019-02-16 00:01:10
    最近搞了一个Springboot+mybatis的框架,往前端进行Json格式转换的时候,发现属性的大写首字母变小写了,这极大的不方便前后一致性,如是网上一堆乱搜,测试了N多情况,算是把问题解决了,不过坑大,记录如下: ...
  • //本人就坑在WriteNonStringKeyAsString 将不是String类型的key转换成String类型,否则前台无法将Json字符串转换Json对象 //3、中文乱码解决方案 List<MediaType> fastMedisTypes = new ArrayList(); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,578
精华内容 5,431
关键字:

json转换器springboot

spring 订阅