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 ...
随机推荐
- C++类结构体与json相互转换
1. 背景与需求 之前写C#的时候,解析json字符串一般使用的是开源的类库Newtonsoft.Json,方法十分简洁,比如: class Project { public string Input ...
- 在Vue中使用JSX,很easy的
摘要:JSX 是一种 Javascript 的语法扩展,JSX = Javascript + XML,即在 Javascript 里面写 XML,因为 JSX 的这个特性,所以他即具备了 Javasc ...
- 学习使用SignalR
1.创建空白的控制台程序 2.添加两个NuGet包(Microsoft.AspNet.SignalR.SelfHost.Microsoft.Owin.Cors.Topshelf)Topshelf用于快 ...
- 试题 历届试题 翻硬币 java题解
问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...
- easyDialog 简单、实用的弹出层组件
easyDialog 简单.实用的弹出层组件 使用背景 在完成导师需求时,导师要求寻找比一个layer弹出层组件体积小得多的.最好能嵌入在进HTML代码中而非src引用的弹出层组件,在这个需求下,我找 ...
- 第四次Alpha Scrum Meeting
本次会议为Alpha阶段第四次Scrum Meeting会议 会议概要 会议时间:2021年4月28日 会议地点:线上会议 会议时长:18min 会议内容简介:本次会议主要由每个人展示自己目前完成的工 ...
- Scrum Meeting 0507
零.说明 日期:2021-5-7 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 测试 测试 cyy ...
- Beta发布声明
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 Beta-发布声明 我们是谁 删库跑路对不队 我们在做什么 题士 进度如何 进度总览 一.功能与特性 1.一 ...
- the Agiles Scrum Meeting 5
会议时间:2020.4.13 20:00 1.每个人的工作 今天已完成的工作 增量组:完成了增量开发的基础工作,初步完成了自动评测机制 issues:增量组:准备评测机制,增加仓库自动创建和管理 完善 ...
- 【二食堂】Alpha - Scrum Meeting 8
Scrum Meeting 8 例会时间:4.18 11:40 - 12:10 进度情况 组员 昨日进度 今日任务 李健 1. 实体的添加和关系的添加实现的有bug,柴博和刘阳进行了帮助issue 1 ...