基础测试

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测试用例的更多相关文章

  1. 用 Eclipse 搭建一个简单的 Maven spring mybatis 项目(包含测试用例)

    1: 先搭建一个Maven项目: 创建好后的目录: 2: 配置pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0& ...

  2. json小结和fastjson包的实际json操作

    工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是json,今天就来聊一聊json,主要分析json数据和java Bean之间的转换问题. 一.json是什么 ...

  3. SpringBoot(十二):springboot2.0.2写测试用例

    导入maven依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artif ...

  4. 除了FastJson,你还有选择: Gson简易指南

    前言 这个周末被几个技术博主的同一篇公众号文章 fastjson又被发现漏洞,这次危害可导致服务瘫痪! 刷屏,离之前漏洞事件没多久,fastjson 又出现严重 Bug.目前项目中不少使用了 fast ...

  5. Groovy元编程应用之自动生成订单搜索接口测试用例集

    背景 在 "Groovy元编程简明教程" 一文中,简明地介绍了 Groovy 元编程的特性. 那么,元编程可以应用哪些场合呢?元编程通常可以用来自动生成一些相似的模板代码. 在 & ...

  6. fastjson =< 1.2.47 反序列化漏洞复现

    fastjson =< 1.2.47 反序列化漏洞复现 HW期间爆出来一个在hw期间使用的fastjson 漏洞,该漏洞无需开启autoType即可利用成功,建议使用fastjson的用户尽快升 ...

  7. Fastjson到了说再见的时候了

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  8. jackson、fastjson、kryo、protostuff等序列化工具性能对比

    简介 实际项目中,我们经常需要使用序列化工具来存储和传输对象.目前用得比较多的序列化工具有:jackson.fastjson.kryo.protostuff.fst 等,本文将简单对比这几款工具序列化 ...

  9. TFS 测试用例步骤数据统计

    TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...

随机推荐

  1. Knativa 基于流量的灰度发布和自动弹性实践

    作者 | 李鹏(元毅) 来源 | Serverless 公众号 一.Knative Knative 提供了基于流量的自动扩缩容能力,可以根据应用的请求量,在高峰时自动扩容实例数:当请求量减少以后,自动 ...

  2. Java读取属性配置文件-properties

    在项目开发中,我们难免将一些可变的参数放在程序以外,作为一个单独的文件,即配置文件,这样方便项目在不同的使用环境部署时.或者说需要不同时,可以通过简单配置这些程序以外的文件来修改程序里的变量. 常用的 ...

  3. mysql update语句的执行流程是怎样的

    update更新语句流程是怎么样的 update更新语句基本流程也会查询select流程一样,都会走一遍. update涉及更新数据,会对行加dml写锁,这个DML读锁是互斥的.其他dml写锁需要等待 ...

  4. pycharm安装pika提示CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com>

    1. 问题描述: pycharm安装第三方库时提示CondaHTTPError: HTTP 000 CONNECTION FAILED. 2. 错误原因:默认镜像源访问速度过慢,会导致超时从而导致更新 ...

  5. javascript-jquery-文档处理

    一.移动元素 1.append():向每个匹配元素的内部追加内容.例如:$("选择器1").qppend("选择器2"):将会匹配选择器2的元素,移动到匹配选择 ...

  6. pagelayout中边界灵敏度动画时间kv

    <PageLayoutWidget>: # 默认是50dp 设置边界 border:'100dp' # 默认哪一页 page:2 # 设置翻页动画及持续时间 anim_kwargs:{'d ...

  7. the Agiles Scrum Meeting 9

    会议时间:2020.4.17 20:00 1.每个人的工作 今天已完成的工作 个人结对项目增量开发组:基本实现个人项目创建.仓库自动分配,修复bug issues: 增量组:准备评测机制,增加仓库自动 ...

  8. Noip模拟47 2021.8.25

    期望得分:55+24+53 实际得分:0+0+3 乐死 累加变量清零了吗? 打出更高的部分分暴力删了吗? 样例解释换行你看见了吗? T1 Prime 打出55分做法没删原来的暴力,结果就轻松挂55分 ...

  9. 震惊,本Orzer下阶段直接怒送四个笑脸

    众所周知,在hzoi帝国中,Wzx是最菜的.那么究竟有多菜呢?下面就和小编一起来看看吧. 近日,hzoi最菜的wzx在第四阶段竟然怒送4个笑脸,同机房神犇直呼wzx太菜了! 以上就是wzx第四阶段怒送 ...

  10. noip模拟11

    T1 math 就挺水一小破题目,第一眼看好像不可做,看着看着突然发现假设x和y的最大公约数是gcd,那么kx%y一定是gcd的倍数, 然后想到可以把所有数字与k的gcd求出来,打一个完全背包,可是仔 ...