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 ...
随机推荐
- MSSQL还原数据库,更改用户登陆权限
有的时候还原完数据库后,使用账号登陆不进去,报告没有这个用户的时候,可以使用以下sql解决: sp_change_users_login 'update_one','username','userna ...
- Spatial Analyst 工具-数学分析
数学分析 # Process: Abs arcpy.gp.Abs_sa("", 输出栅格) # Process: Exp arcpy.gp.Exp_sa("", ...
- 随机生成文章的AI(C++)
#include <iostream> #include <cstdlib> #include <ctime> #include <fstream> u ...
- mybatis 操作数据库(05)
类型转换.动态排序,查询接口与mapper对应关系说明及其注意事项 一.MyBatis 自带写常见类型转换器.例如:java 类中 String 对应 mySQL中的varchar 二.自定义类型转换 ...
- CVE-2017-11882 漏洞分析总结 新手漏洞分析详细教程
CVE-2017-11882分析总结 注: 这篇随笔记录了CVE-2017-11882漏洞分析的整个过程,并介绍了相关调试软件的使用 漏洞信息 CVE-2017-11882属于缓冲区溢出类型漏洞,产生 ...
- SignalR 在React/GO技术栈的生产应用
哼哧哼哧半年,优化改进了一个运维开发web平台. 本文记录SignalR在react/golang 技术栈的生产小实践. 1. 背景 有个前后端分离的运维开发web平台, 后端会间隔5分钟同步一次数据 ...
- windows10安装MySQL8.0.27
1.官网下载安装包:https://dev.mysql.com/downloads/mysql/ 2.将解压文件解压到你安装的目录:D:\mysql-8.0.27-winx64 注意:不要放在有中文名 ...
- K12教培从业者转型指南 换个赛道依然可以再创辉煌
随着"双减"政策的落地,属于K12教培机构的时代逐渐拉上帷幕,面对机会不再的K12教培行业,约70万机构和近千万的从业人员面临转型问题.压力之下,留下或离开?对广大K12教培机构从 ...
- 【UE4 C++ 基础知识】<14> 多线程——AsyncTask
概念 AsyncTask AsyncTask 系统是一套基于线程池的异步任务处理系统.每创建一个AsyncTas,都会被加入到线程池中进行执行 AsyncTask 泛指 FAsyncTask 和 FA ...
- ScatterLayout:分散布局在py中的引用
""" ScatterLayout:分散布局 """ from kivy.app import App from kivy.uix.scat ...