java json声明_Java Json 处理

一,Json处理组件

常见的 Json 处理组件有下面几个:

通过查看教程基础使用,再结合部分简单源码学习,掌握起来不是什么问题。

二,Spring boot 中使用 Json 处理组件

1,配置 jackson

spring boot 采用 HttpMessageConverters 类对 http 过程中的 json 数据进行转换,默认使用的 json 组件是 jackson,相关说明请参考spring文档.通过 jackson 文档我们知道,使用 jackson 进行 json 数据处理需要先获取 ObjectMapper 对象,而在 spring boot 中默认已经注入了该对象,并且加入了一些默认设置,通过 spring文档 我们也知道,这些设置可以通过使用相应的配置项进行覆盖。spring boot 中的全部配置项请参考 spring 配置项文档。

如果想注入自己的 ObjectMapper 对象,则可以在配置类中通过 @Bean 和 @Primary 来覆盖默认的 ObjectMapper 对象并且加入自定义的配置.简单示例代码如下:@Configuration

public class DemoConfig {

@Bean

@Primary

public ObjectMapper objectMapper() {

ObjectMapper objectMapper = new ObjectMapper();

//自定义配置

objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);

return objectMapper;

}

}

2,使用其它 json 组件

可以通过配置来使用其它的 json 组件而不是使用默认的 jackson,下面以使用 fastjson 为例,说明配置方法。@Configuration

public class DemoConfig {

@Bean

public HttpMessageConverters customConverters() {

//配置  HttpMessageConverters 类,可以有多个

return new HttpMessageConverters(false, Collections.singletonList(new DemoHttpMessageConverter()));

}

public class DemoHttpMessageConverter implements HttpMessageConverter {

@Override

public boolean canRead(Class aClass, MediaType mediaType) {

return true;

}

@Override

public boolean canWrite(Class aClass, MediaType mediaType) {

return true;

}

@Override

public List getSupportedMediaTypes() {

List mediaTypes = new ArrayList<>();

mediaTypes.add(MediaType.APPLICATION_JSON);

mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);

return mediaTypes;

}

@Override

public Object read(Class aClass, HttpInputMessage httpInputMessage) throws IOException, HttpMessageNotReadableException {

//这里使用 json 组件对 http request 中的 json 数据做处理

return null;

}

@Override

public void write(Object o, MediaType mediaType, HttpOutputMessage httpOutputMessage) throws IOException, HttpMessageNotWritableException {

//设置响应字符集

httpOutputMessage.getHeaders().set("content-type", "application/json; charset=utf-8");

//使用 fastjson JSON 对象将 Oject 转成 String 并输出

httpOutputMessage.getBody().write(JSON.toJSON(o).toString().getBytes());

}

}

}

前提记得在 pom 文件中引入 json 组件依赖,像这里需要引入 fastjson 的依赖。

3,补充说明

在实际生产环境中,我们通常都直接使用 jackson 作为 http 的 json 处理组件,对于其它场景需要,则可以同时引入其它 json 组件,并且在项目中配置成单例工具类方便使用,实际使用还是要熟练掌握对应的 json 组件类,spring boot 中的使用则相对较简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值