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

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

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

pom.xml中dependency配置:

xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

com.qinker

spring-boot

war

org.springframework.boot

spring-boot-starter-parent

2.0.0.release

0.0.1-snapshot

spring-boot

http://maven.apache.org

utf-8

9

org.springframework.boot

spring-boot-starter-web

spring-boot

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

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;

}

}

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;

}

}

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,结果如下:

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

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

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

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

com.alibaba

fastjson

1.2.47

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

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如下:

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> converters) {

webmvcconfigurer.super.configuremessageconverters(converters);

//创建fastjson转换器实例

fastjsonhttpmessageconverter converter = new fastjsonhttpmessageconverter();

//配置对象

fastjsonconfig config = new fastjsonconfig();

list 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);

}

}

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

{

"age":33,

"createtime":"2018-04-04 11:14",

"name":"张三"

}

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

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 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);

}

}

访问结果是一样的。

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

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值