fastjson的简单使用
实习初期,开始接触到系统的后台日志查询展示到前台,后台将查询到的数据转化成json格式返回前台,发现系统使用的是阿里的fastjson,于是想来了解一下fastjson的使用。
以下使用都是基于这个版本:
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
我在学习之前,对json字符串和json对象是分不清的,特地百度找了一篇好文可以很好的区分:JSON字符串与JSON对象的区别
此文主要是使用java来进行转换,在jsp页面使用js/jq进行转换,也特地百度找了一篇好文可以学习:json字符串、json对象、数组之间的转换
一、简单对象与json之间转换:
简单对象:
public class Person {
private String lastName;
private String gender;
private Integer age;
public Person() {
}
//此处省略getter,setter方法,不然代码太长,影响阅读
@Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
'}';
}
}
1.简单对象转json:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; public class JsonUtil { public static void main(String[] args){
Person person = new Person();
person.setLastName("张三");
person.setGender("男");
person.setAge(30); //简单对象转换成json字符串
String jsonStr = JSON.toJSONString(person);
System.out.println("jsonStr = "+jsonStr);
//json字符串转换成json对象
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
System.out.println("jsonObject = "+jsonObject.toString());
} }
运行结果:

2、json转简单对象:
@Test
public void jsonToJavabean(){
String jsonStr = "{ \"lastName\": \"李四\", \"gender\": \"女\", \"age\": 28 }";
Person person = JSON.parseObject(jsonStr,Person.class);
System.out.println(person);
}
二、list对象与json之间转换
1、list对象转jsonArray:
public void testListToJson(){
List<Person> list = new ArrayList<>();
Person person1 = new Person("AAA","男",12);
Person person2 = new Person("BBB","女",24);
Person person3 = new Person("CCC","女",18);
Person person4 = new Person("DDD","男",49);
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
String jsonStr = JSON.toJSONString(list);
System.out.println(jsonStr);
JSONArray jsonArray = JSONArray.parseArray(jsonStr);
System.out.println(jsonArray);
}
注意:这里是JSONArray,不是JSONObject.
运行结果:

2、json字符串转list:
public void testJsonToList(){
String jsonStr = "[{\"lastName\":\"AAA\",\"gender\":\"男\",\"age\":12},
{\"lastName\":\"BBB\",\"gender\":\"女\",\"age\":24},
{\"lastName\":\"CCC\",\"gender\":\"女\",\"age\":18},
{\"lastName\":\"DDD\",\"gender\":\"男\",\"age\":49}]";
List<Person> list = JSON.parseArray(jsonStr,Person.class);
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
System.out.println(list.get(3));
}
List<Person> list = JSON.parseArray(jsonStr,Person.class),这里的Person.class是根据泛型决定的。
例如:List<Map<String,Object>> mapList = JSON.parseArray(menuJson,Map.class)
运行结果:

三、map与json之间转换
1、map转json:
public void testMapToJson(){
Map<String,Object> map = new HashMap<>();
map.put("id",1);
map.put("name","shenggangfeng");
map.put("age",23);
map.put("gender","男");
String jsonstr = JSON.toJSONString(map);
System.out.println(jsonstr);
JSONObject jsonObject = JSONObject.parseObject(jsonstr);
System.out.println(jsonObject);
}
运行结果:

2、json转map
public void testJsonToMap(){
String jsonStr = "{ \"id\": 2,\"name\": \"liull\",\"age\": 22,\"gender\": \"女\" }";
Map<String,Object> map = JSON.parseObject(jsonStr,Map.class);
System.out.println(map.get("id"));
System.out.println(map.get("name"));
System.out.println(map.get("age"));
System.out.println(map.get("gender"));
}
运行结果:

总结:
已上转换方法中用的最多的也就几个特定的方法:
1.JSON的静态方法toJSONString(Object object),用于将java对象转化成json字符串
public static String toJSONString(Object object) {
return toJSONString(object, emptyFilters, new SerializerFeature[0]);
}
2.JSON的静态方法parseObject(String text,Class<T> clazz),用于将json字符串转换成java对象
public static <T> T parseObject(String text, Class<T> clazz) {
return parseObject(text, clazz, new Feature[0]);
}
3.JSON的静态方法parseObject(String text),用于将json字符串转换成json对象。
public static JSONObject parseObject(String text) {
Object obj = parse(text);
if(obj instanceof JSONObject) {
return (JSONObject)obj;
} else {
try {
return (JSONObject)toJSON(obj);
} catch (RuntimeException var3) {
throw new JSONException("can not cast to JSONObject.", var3);
}
}
}
4.JSON的静态方法parseArray(String text),用于将json字符串转换成json数组。
public static JSONArray parseArray(String text) {
if(text == null) {
return null;
} else {
DefaultJSONParser parser = new DefaultJSONParser(text, ParserConfig.getGlobalInstance());
JSONLexer lexer = parser.lexer;
JSONArray array;
if(lexer.token() == 8) {
lexer.nextToken();
array = null;
} else if(lexer.token() == 20) {
array = null;
} else {
array = new JSONArray();
parser.parseArray(array);
parser.handleResovleTask(array);
}
parser.close();
return array;
}
}
5.JSON的静态方法parseArray(String text, Class<T> clazz),用于将json字符串转换成java数组,其中第二个参数是数组元素的类型。
public static <T> List<T> parseArray(String text, Class<T> clazz) {
if(text == null) {
return null;
} else {
DefaultJSONParser parser = new DefaultJSONParser(text, ParserConfig.getGlobalInstance());
JSONLexer lexer = parser.lexer;
int token = lexer.token();
ArrayList list;
if(token == 8) {
lexer.nextToken();
list = null;
} else if(token == 20 && lexer.isBlankInput()) {
list = null;
} else {
list = new ArrayList();
parser.parseArray(clazz, list);
parser.handleResovleTask(list);
}
parser.close();
return list;
}
}
fastjson的简单使用的更多相关文章
- 高性能JSON框架之FastJson的简单使用
1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的 ...
- Android原生json和fastjson的简单使用
android原生操作json数据 主要是两个类 JSONObject 操作对象 JONSArray操作json数组 对象转json //创建学生对象 Student student=new ...
- FastJson的简单实用
一.FastJson的理解 在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON ...
- fastjson 的简单说明及使用
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发. 各个版本jar包下载地址:https://repo1.maven.org/maven2/ ...
- FastJson的简单使用(alibaba)
原文章:http://blog.csdn.net/glarystar/article/details/6654494 原作者:张星的博客 maven配置: <dependency> < ...
- Fastjson 的简单使用<转>
简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...
- JSON解析工具——fastjson的简单使用
从官方文档入手: 常见问题与快速上手:https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 各种使 ...
- fastjson过滤器简单记录
fastjson过滤器,该字段可以将转化的json字段遍历,方便实用 1 /** * 通用输出json * @param object * @return json字符串 */ public Stri ...
- fastjson JSONObject简单使用
工作中用的蛮多的最近整理下,概括地说 通过这个工具可以让一个json在json串,JSONObject,java对象之间进行转化 首先我们先写2个bean来构成一个比较复杂的json串: public ...
随机推荐
- Windows下搭建kafka运行环境
完整解决方案请参考: Setting Up and Running Apache Kafka on Windows OS 在环境搭建过程中遇到两个问题,在这里先列出来,以方便查询: 1. \Jav ...
- 华大单片机开发板HC32L13X上手入门
HC32L136开发板(如下图所示)分为板载调试模块(左半部分)和MCU开发电路(右半部分).二者中间通过邮票孔相连,如果将板子从中间掰开,板载调试模块就可以当一个CMSIS-DAP的仿真器来使用.此 ...
- DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer
DjangoRestFramework学习二之序列化组件.视图组件 本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...
- linux 服务器时间同步
1 12 * * * .usr/sbin/nttpdate pool.ntp.org 分时 天 周 月 定时更同步 crontab -e 先查看是否安装 ntp这个包 没有安装的话 yum-y ...
- git 和github使用
强制推送覆盖到远程仓库!!
- Vue学习记录第二天
又来做笔记啦,今天又自暴自弃了,还好及时清醒过来了,什么时候努力都不晚,主要是要一直坚持下去,只要坚持就一定会有收获,所有成功得人背后都是付出了巨大得努力的,没有人平白无故的成功.看似光鲜亮丽的背后, ...
- Jmeter学习之--dubbo接口测试
背景:公司的h5和APP都需要调用许多非http的服务,需要对服务的性能和自动化测试 工具:IDEA ,maven,Jmeter 参考文档: https://testerhome.com/topics ...
- 2019王小的Java学习之路
文章背景身边有个非常要好的朋友王某某,因为是发小的关系,之后文章统称为王小. 大专毕业后 顺利 的被安排进了某某工厂工作,工作一段时间后,尽管工作比较轻松,却无法忍受终日的流水线生活,经过我的介绍,决 ...
- JavaScript 中 return,return true,return false
1.return: ①return + 表达式,调用函数,并返回表达式的值 ②return,终止函数 ③当代码执行到return语句时,函数返回一个结果就结束运行了,return后面的语句根本不会执行 ...
- 多线程深入:让你彻底理解Synchronized(转)
原文:https://www.jianshu.com/p/d53bf830fa09 1. synchronized简介 在学习知识前,我们先来看一个现象: public class Synchroni ...