gpt4 book ai didi

SpringBoot使用自定义json解析器的使用方法

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章SpringBoot使用自定义json解析器的使用方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

spring-boot是基于spring框架的,它并不是对spring框架的功能增强,而是对spring的一种快速构建的方式.

spring-boot应用程序提供了默认的json转换器,为jackson。示例:

pom.xml中dependency配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<project xmlns= "http://maven.apache.org/pom/4.0.0" xmlns:xsi= "http://www.w3.org/2001/xmlschema-instance"
  xsi:schemalocation= "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" >
  <modelversion> 4.0 . 0 </modelversion>
  <groupid>com.qinker</groupid>
  <artifactid>spring-boot</artifactid>
  <packaging>war</packaging>
  <parent>
   <groupid>org.springframework.boot</groupid>
   <artifactid>spring-boot-starter-parent</artifactid>
   <version> 2.0 . 0 .release</version>
  </parent>
  <version> 0.0 . 1 -snapshot</version>
  <name>spring-boot</name>
  <url>http: //maven.apache.org</url>
  <properties>
   <project.build.sourceencoding>utf- 8 </project.build.sourceencoding>
   <java.version> 9 </java.version>
  </properties>
  <dependencies>
   <!-- https: //mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
   <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-web</artifactid>
   </dependency>
 
  </dependencies>
  <build>
   <finalname>spring-boot</finalname>
  </build>
</project>

创建三个类:mainapp.java和user.java以及hellocontroller.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.springboot;
import java.util.date;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.restcontroller;
@restcontroller
public class hellocontroller {
 
  @requestmapping ( "/hello" )
  public string hello() {
   return "hello,springboot" ;
  }
  
  /**
   * spring boot 默认json解析框架是jackson
   * @return
   */
  @requestmapping ( "/getuser" )
  public user getuser() {
   user u = new user();
   u.setname( "张三" );
   u.setage( 33 );
   u.setcreatetime( new date());
   return u;
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.springboot;
import java.io.serializable;
import java.util.date;
public class user implements serializable{
  private string name; 
  private int age; 
  private date createtime;
  public string getname() {
   return name;
  }
 
  public void setname(string name) {
   this .name = name;
  }
 
  public int getage() {
   return age;
  }
 
  public void setage( int age) {
   this .age = age;
  }
 
  public date getcreatetime() {
   return createtime;
  }
 
  public void setcreatetime(date createtime) {
   this .createtime = createtime;
 
}
?
1
2
3
4
5
6
7
8
9
package com.springboot;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
@springbootapplication
public class mainapp{
  public static void main(string[] args) {
   springapplication.run(mainapp. class , args);
  }
}

启动mainapp:访问http://localhost:8080/getuser,结果如下:

?
1
{ "name" : "张三" , "age" : 33 , "createtime" : "2018-04-04t03:03:08.534+0000" }

可见:我们并未做任何配置,返回的却是json数据,可见spring-boot对json做了默认实现,使用的是内置jackson转换器.

那么,下面看看如何使用自定义的json转换器,这里以fastjson为例:

首先,引入fastjson包,在pom中添加如下依赖:

?
1
2
3
4
5
6
<!-- https: //mvnrepository.com/artifact/com.alibaba/fastjson -->
   <dependency>
    <groupid>com.alibaba</groupid>
    <artifactid>fastjson</artifactid>
    <version> 1.2 . 47 </version>
   </dependency>

为了方便看出效果:修改user类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.springboot;
import java.io.serializable;
import java.util.date;
import com.alibaba.fastjson.annotation.jsonfield;
@suppresswarnings ( "serial" )
public class user implements serializable{
  private string name; 
  private int age; 
  @jsonfield (format= "yyyy-mm-dd hh:mm" )
  private date createtime;
  public string getname() {
   return name;
  }
 
  public void setname(string name) {
   this .name = name;
  }
 
  public int getage() {
   return age;
  }
 
  public void setage( int age) {
   this .age = age;
  }
 
  public date getcreatetime() {
   return createtime;
  }
 
  public void setcreatetime(date createtime) {
   this .createtime = createtime;
  }
}

1.实现fastjson自定义json转换的第一种方式,spring-boot实现webmvcconventer接口:

修改mainapp如下:  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.springboot;
import java.util.arraylist;
import java.util.list;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.http.mediatype;
import org.springframework.http.converter.httpmessageconverter;
import org.springframework.web.servlet.config.annotation.webmvcconfigurer;
import com.alibaba.fastjson.serializer.serializerfeature;
import com.alibaba.fastjson.support.config.fastjsonconfig;
import com.alibaba.fastjson.support.spring.fastjsonhttpmessageconverter;
  @springbootapplication
public class mainapp implements webmvcconfigurer{
  @override
  public void configuremessageconverters(list<httpmessageconverter<?>> converters) {
   webmvcconfigurer. super .configuremessageconverters(converters);
   //创建fastjson转换器实例
   fastjsonhttpmessageconverter converter = new fastjsonhttpmessageconverter();
   //配置对象
   fastjsonconfig config = new fastjsonconfig();
   list<mediatype> mediatypes = new arraylist<>();
   //中文编码
   mediatype mediatype = mediatype.application_json_utf8;
   mediatypes.add(mediatype);
   config.setserializerfeatures(serializerfeature.prettyformat);
   converter.setsupportedmediatypes(mediatypes);
   converter.setfastjsonconfig(config);
   converters.add(converter);
  }
 
  public static void main(string[] args) {
   springapplication.run(mainapp. class , args);
  }
}

启动程序:访问上面的路径:浏览器会看到如下结果:

?
1
2
3
4
5
{
  "age" : 33 ,
  "createtime" : "2018-04-04 11:14" ,
  "name" : "张三"
}

2.使用@bean注解注入fastjson转换器:修改mainapp如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.springboot;
import java.util.arraylist;
import java.util.list;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.boot.autoconfigure.http.httpmessageconverters;
import org.springframework.context.annotation.bean;
import org.springframework.http.mediatype;
import com.alibaba.fastjson.serializer.serializerfeature;
import com.alibaba.fastjson.support.config.fastjsonconfig;
import com.alibaba.fastjson.support.spring.fastjsonhttpmessageconverter;
@springbootapplication
public class mainapp{
  @bean
  public httpmessageconverters fastjsonhttpmessageconventers() {
   fastjsonhttpmessageconverter converter = new fastjsonhttpmessageconverter();
   fastjsonconfig config = new fastjsonconfig();
   config.setserializerfeatures(serializerfeature.prettyformat);
   list<mediatype> mediatypes = new arraylist<>();
   mediatypes.add(mediatype.application_json_utf8);
   converter.setsupportedmediatypes(mediatypes);
   return new httpmessageconverters(converter);
  }
 
  public static void main(string[] args) {
   springapplication.run(mainapp. class , args);
  }
}

访问结果是一样的.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.csdn.net/lory_li/article/details/79814449 。

最后此篇关于SpringBoot使用自定义json解析器的使用方法的文章就讲到这里了,如果你想了解更多关于SpringBoot使用自定义json解析器的使用方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com