概述
在业务分析及数据库设计时,我们可能想将以字符串格式存储存储json数组对象
即以字符串格式存储下面对象
[{"color":"红色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINKADo__AAjlKdWCzvg874.jpg"},{"color":"黑色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINyAQAXHAAgawLS1G5Y136.jpg"}]
那么,fastJSON和jackson是否支持
"tbGoodsDescs":{"itemImages":[{"color":"红色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINKADo__AAjlKdWCzvg874.jpg"},{"color":"黑色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINyAQAXHAAgawLS1G5Y136.jpg"}]}
的传入呐?
我们做一个探究
fastJSON
首先在Application中配置fastJSON
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
//1、定义一个convert转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastjson的配置信息
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3、在convert中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4、将convert添加到converters中
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
Controller是这样的
@PostMapping("/saveGoodsAndGoodsDesc")
public String saveGoodsAndGoodsDesc(@RequestBody GoodsAndgoodsDesc goodsAndgoodsDesc){
goodsAndgoodsDesc.getTbGoodsDescs().setGoodsId((long) 666666);
iTbGoodsDescService.save(goodsAndgoodsDesc.getTbGoodsDescs());
return "good";
}
组合实体类
@Data
public class GoodsAndgoodsDesc {
private TbGoods goods;
private TbGoodsDesc tbGoodsDescs;
@Override
public String toString() {
return "GoodsAndgoodsDesc{" +
"goods=" + goods +
", tbGoodsDescs=" + tbGoodsDescs +
'}';
}
}
来测试:
可以看到有正确返回了
在来看数据库中
也是有数据的,OKK
jackson
我们把Application中的fastJSON配置注掉,SpringBoot是默认是支持jackson的,为此不用做配置,直接测就好
当传入
{
"tbGoodsDescs":{"itemImages":[{"color":"红色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINKADo__AAjlKdWCzvg874.jpg"},{"color":"黑色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINyAQAXHAAgawLS1G5Y136.jpg"}]}
}
直接报错,
那么说明,jackson是不支持将json数组对象转换为字符串的,要将以字符串格式存储存储json数组对象的话,可以考虑在SpringBoot中配置、使用fastJSON