FastJson测试用例
基础测试
package com.ai;
import com.ai.test.daily.Student;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
//@SpringBootTest(classes = com.ai.main.Application.class)
//@RunWith(SpringRunner.class)
public class Application {
private Student student=new Student();
private Student student1=new Student();
@Before
public void before(){
student.setAge(18);
student.setBirthday(new Date());
student.setEmail("333333.qq.com");
student.setId(1);
student.setName("李强");
student1.setAge(180);
student1.setBirthday(new Date());
student1.setEmail("333333.qq.com");
student1.setId(2);
student1.setName("张三");
}
@Test //bean->json
public void beanToJson() {
String jsonString = JSON.toJSONString(student);
System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++bean->json+++++++++++++++++++++++++++++++++");
System.out.println(jsonString);
}
@Test //json-> bean
public void jsonToBean() {
String jsonString = "{\"age\":18,\"birthday\":1636371553598,\"email\":\"333333.qq.com\",\"id\":1,\"name\":\"李强\"}";
Student student = JSON.parseObject(jsonString, Student.class);
System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++json-> bean+++++++++++++++++++++++++++++++++");
System.out.println(student.toString());
}
@Test //list-> json
public void listToJson() {
ArrayList<Student> list = new ArrayList<>();
list.add(student);
list.add(student1);
String jsonString = JSON.toJSONString(list);
System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++list-> json+++++++++++++++++++++++++++++++++");
System.out.println(jsonString);
}
@Test //json-> list
public void jsonToList() {
String jsonString = "[{\"age\":18,\"birthday\":1636372096907,\"email\":\"333333.qq.com\",\"id\":1,\"name\":\"李强\"},{\"age\":180,\"birthday\":1636372096907,\"email\":\"333333.qq.com\",\"id\":2,\"name\":\"张三\"}]";
List<Student> students = JSON.parseArray(jsonString, Student.class);
System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++json-> list+++++++++++++++++++++++++++++++++");
System.out.println(students.toString());
}
@Test //map-> json
public void mapToJson() {
HashMap<String, Student> map = new HashMap<>();
map.put("student",student);
map.put("student1",student1);
String jsonString = JSON.toJSONString(map);
System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++map-> json+++++++++++++++++++++++++++++++++");
System.out.println(jsonString);
}
@Test //json-> map
public void jsonToMap() {
String jsonString = "{\"student\":{\"age\":18,\"birthday\":1636372534788,\"email\":\"333333.qq.com\",\"id\":1,\"name\":\"李强\"},\"student1\":{\"age\":180,\"birthday\":1636372534788,\"email\":\"333333.qq.com\",\"id\":2,\"name\":\"张三\"}}";
HashMap<String, Student> map = JSON.parseObject(jsonString, new TypeReference<HashMap<String, Student>>(){});
System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++json-> map+++++++++++++++++++++++++++++++++");
System.out.println(map.toString());
}
@Test
//SerializerFeature 枚举类: 进行序列化时,特殊化定制
// QuoteFieldNames 输出key时是否使用双引号,默认为true
// UseSingleQuotes 使用单引号而不是双引号,默认为false
// WriteMapNullValue 是否输出值为null的字段,默认为false
// WriteEnumUsingToString Enum输出name()或者original,默认为false
// UseISO8601DateFormat Date使用ISO8601格式输出,默认为false
// WriteNullListAsEmpty List字段如果为null,输出为[],而非null
// WriteNullStringAsEmpty 字符类型字段如果为null,输出为”“,而非null
// WriteNullNumberAsZero 数值字段如果为null,输出为0,而非null
// WriteNullBooleanAsFalse Boolean字段如果为null,输出为false,而非null
// SkipTransientField 如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true
// SortField 按字段名称排序后输出。默认为false
// WriteTabAsSpecial 把\t做转义输出,默认为false 不推荐
// PrettyFormat 结果是否格式化,默认为false
// WriteClassName 序列化时写入类型信息,默认为false。反序列化是需用到
// DisableCircularReferenceDetect 消除对同一对象循环引用的问题,默认为false
// WriteSlashAsSpecial 对斜杠’/’进行转义
// WriteDateUseDateFormat 全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
// DisableCheckSpecialChar 一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false
// BeanToArray 将对象转为array输出
public void SerializerFeature(){
String jsonStringSerializerFeature = JSON.toJSONString(student
, SerializerFeature.WriteDateUseDateFormat // WriteDateUseDateFormat 全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
, SerializerFeature.WriteNullStringAsEmpty // WriteNullNumberAsZero 数值字段如果为null,输出为0,而非null
, SerializerFeature.PrettyFormat // UseSingleQuotes 使用单引号而不是双引号,默认为false
);
String jsonString = JSON.toJSONString(student);
//对比
System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++SerializerFeature++++++++++++++++++++++++++++++++");
System.out.println("jsonStringSerializerFeature"+jsonStringSerializerFeature);
System.out.println("jsonString+++"+jsonString);
}
}
SpringMVC
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import java.nio.charset.Charset;
@Configuration
public class HttpMessageConverterConfig {
//引入Fastjson解析json,不使用默认的jackson
//必须在pom.xml引入fastjson的jar包,并且版必须大于1.2.10
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
//1、定义一个convert转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastjson的配置信息
FastJsonConfig fastJsonConfig = new FastJsonConfig();
SerializerFeature[] serializerFeatures = new SerializerFeature[]{
// 输出key是包含双引号
// SerializerFeature.QuoteFieldNames,
// 是否输出为null的字段,若为null 则显示该字段
// SerializerFeature.WriteMapNullValue,
// 数值字段如果为null,则输出为0
SerializerFeature.WriteNullNumberAsZero,
// List字段如果为null,输出为[],而非null
SerializerFeature.WriteNullListAsEmpty,
// 字符类型字段如果为null,输出为"",而非null
SerializerFeature.WriteNullStringAsEmpty,
// Boolean字段如果为null,输出为false,而非null
SerializerFeature.WriteNullBooleanAsFalse,
// Date的日期转换器
SerializerFeature.WriteDateUseDateFormat,
// 循环引用
SerializerFeature.DisableCircularReferenceDetect,
};
fastJsonConfig.setSerializerFeatures(serializerFeatures);
fastJsonConfig.setCharset(Charset.forName("UTF-8"));
//3、在convert中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4、将convert添加到converters中
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
}
FastJson测试用例的更多相关文章
- 用 Eclipse 搭建一个简单的 Maven spring mybatis 项目(包含测试用例)
1: 先搭建一个Maven项目: 创建好后的目录: 2: 配置pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0& ...
- json小结和fastjson包的实际json操作
工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是json,今天就来聊一聊json,主要分析json数据和java Bean之间的转换问题. 一.json是什么 ...
- SpringBoot(十二):springboot2.0.2写测试用例
导入maven依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artif ...
- 除了FastJson,你还有选择: Gson简易指南
前言 这个周末被几个技术博主的同一篇公众号文章 fastjson又被发现漏洞,这次危害可导致服务瘫痪! 刷屏,离之前漏洞事件没多久,fastjson 又出现严重 Bug.目前项目中不少使用了 fast ...
- Groovy元编程应用之自动生成订单搜索接口测试用例集
背景 在 "Groovy元编程简明教程" 一文中,简明地介绍了 Groovy 元编程的特性. 那么,元编程可以应用哪些场合呢?元编程通常可以用来自动生成一些相似的模板代码. 在 & ...
- fastjson =< 1.2.47 反序列化漏洞复现
fastjson =< 1.2.47 反序列化漏洞复现 HW期间爆出来一个在hw期间使用的fastjson 漏洞,该漏洞无需开启autoType即可利用成功,建议使用fastjson的用户尽快升 ...
- Fastjson到了说再见的时候了
生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...
- jackson、fastjson、kryo、protostuff等序列化工具性能对比
简介 实际项目中,我们经常需要使用序列化工具来存储和传输对象.目前用得比较多的序列化工具有:jackson.fastjson.kryo.protostuff.fst 等,本文将简单对比这几款工具序列化 ...
- TFS 测试用例步骤数据统计
TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...
随机推荐
- Redis缓存穿透、缓存击穿、缓存雪崩的介绍及其解决方案
首先,来画一张图了解下缓存处理的流程 一.缓存穿透 描述: 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求查询该数据,导致数据库压力过大. 解决方案: 1.接口校验 如鉴权校验.数据合法性 ...
- Spatial Analyst Tools(Spatial Analyst 工具)
Spatial Analyst Tools 1.区域分析 # Process: 以表格显示分区几何统计 arcpy.gp.ZonalGeometryAsTable_sa("", & ...
- vue3.x移动端页面基于vue-router的路由切换动画
移动端页面切换一般都具有动画,我们既然要做混合开发,做完之后还是不能看起来就像一个网页,所以我们基于vue-router扩展了一个页面切换push和pop的动画.这是一篇比较硬核的帖子,作者花了不少精 ...
- FastAPI 学习之路(五十四)startup 和 shutdown
我们在实际的开发中呢,总会遇到这样的场景,我们想在启动或者终止的时候,做一些事情,那么应该如何实现呢,其实也是很简单.fastapi提供了这样的操作. 那么我们看下具体是怎么实现的呢 app = Fa ...
- UltraSoft - Alpha - Scrum Meeting 3
Date: Apr 15th, 2020. 会议内容为 贡献分确定与进度汇报. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM.后端 学习前后端分离技术的项 ...
- BUAA_2020_软件工程_结对项目作业
项目 内容 这个作业属于哪个课程 班级博客 这个作业的要求在哪里 作业要求 我在这个课程的目标是 掌握软件工程的思路方法 这个作业在哪个具体方面帮助我实现目标 学习结对编程 教学班级 006 项目地址 ...
- .Net(c#)汉字和Unicode编码互相转换实例
{"name": "\u676d\u5dde", "href": "www.baidu.com"} 经常遇到这样内容的j ...
- POJ 2536 Gopher II(二分图最大匹配)
题意: N只地鼠M个洞,每只地鼠.每个洞都有一个坐标. 每只地鼠速度一样,对于每只地鼠而言,如果它跑到某一个洞的所花的时间小于等于S,它才不会被老鹰吃掉. 规定每个洞最多只能藏一只地鼠. 问最少有多少 ...
- hdu 5056 Boring count (类似单调队列的做法。。)
给一个由小写字母构成的字符串S,问有多少个子串满足:在这个子串中每个字母的个数都不超过K. 数据范围: 1<=T<= 1001 <= the length of S <= 10 ...
- vue2强制刷新,解决页面不会重新渲染的问题
问题描述: 在使用Vue框架开发时,在函数中改变了页面中的某个值,在函数中查看是修改成功了,但在页面中没有及时刷新改变后的值: 解决: 运用 this.$forceUpdate(); //强制刷新, ...