1.前言

1.1.FastJson的介绍:

JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson

1.2.FastJson的特点:

1.FastJson数度快,无论序列化和反序列化,都是当之无愧的fast 
2.功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum) 
3.零依赖(没有依赖其它任何类库)

1.3.FastJson的简单说明:

FastJson对于json格式字符串的解析主要用到了下面三个类: 
1.JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换 
2.JSONObject:fastJson提供的json对象 
3.JSONArray:fastJson提供json数组对象

还在迷茫和彷徨吗,快上车,老司机带你飞!

2.FastJson的用法

首先定义三个json格式的字符串

//json字符串-简单对象型 private static final String  JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";  //json字符串-数组类型 private static final String  JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";  //复杂格式json字符串 private static final String  COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";

2.1.JSON格式字符串与JSON对象之间的转换

2.1.1.json字符串-简单对象型与JSONObject之间的转换

/**  * json字符串-简单对象型到JSONObject的转换  */ @Test public void testJSONStrToJSONObject() {      JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);      System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "             + jsonObject.getInteger("studentAge"));  }  /**  * JSONObject到json字符串-简单对象型的转换  */ @Test public void testJSONObjectToJSONStr() {      //已知JSONObject,目标要转换为json字符串     JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);     // 第一种方式     String jsonString = JSONObject.toJSONString(jsonObject);      // 第二种方式     //String jsonString = jsonObject.toJSONString();     System.out.println(jsonString); }

2.1.2.json字符串(数组类型)与JSONArray之间的转换

/**  * json字符串-数组类型到JSONArray的转换  */ @Test public void testJSONStrToJSONArray() {      JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);      //遍历方式1     int size = jsonArray.size();     for (int i = 0; i < size; i++) {          JSONObject jsonObject = jsonArray.getJSONObject(i);         System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "                 + jsonObject.getInteger("studentAge"));     }      //遍历方式2     for (Object obj : jsonArray) {          JSONObject jsonObject = (JSONObject) obj;         System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "                 + jsonObject.getInteger("studentAge"));     } }  /**  * JSONArray到json字符串-数组类型的转换  */ @Test public void testJSONArrayToJSONStr() {      //已知JSONArray,目标要转换为json字符串     JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);     //第一种方式     String jsonString = JSONArray.toJSONString(jsonArray);      // 第二种方式     //String jsonString = jsonArray.toJSONString(jsonArray);     System.out.println(jsonString); }

2.1.3.复杂json格式字符串与JSONObject之间的转换

/**  * 复杂json格式字符串到JSONObject的转换  */ @Test public void testComplexJSONStrToJSONObject() {      JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);      String teacherName = jsonObject.getString("teacherName");     Integer teacherAge = jsonObject.getInteger("teacherAge");      System.out.println("teacherName:  " + teacherName + "   teacherAge:  " + teacherAge);      JSONObject jsonObjectcourse = jsonObject.getJSONObject("course");      //获取JSONObject中的数据     String courseName = jsonObjectcourse.getString("courseName");     Integer code = jsonObjectcourse.getInteger("code");      System.out.println("courseName:  " + courseName + "   code:  " + code);      JSONArray jsonArraystudents = jsonObject.getJSONArray("students");      //遍历JSONArray     for (Object object : jsonArraystudents) {          JSONObject jsonObjectone = (JSONObject) object;         String studentName = jsonObjectone.getString("studentName");         Integer studentAge = jsonObjectone.getInteger("studentAge");          System.out.println("studentName:  " + studentName + "   studentAge:  " + studentAge);     } }  /**  * 复杂JSONObject到json格式字符串的转换  */ @Test public void testJSONObjectToComplexJSONStr() {     //复杂JSONObject,目标要转换为json字符串     JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);      //第一种方式     //String jsonString = JSONObject.toJSONString(jsonObject);      //第二种方式     String jsonString = jsonObject.toJSONString();     System.out.println(jsonString);  }

2.2.JSON格式字符串与javaBean之间的转换

2.2.1.json字符串-简单对象型与javaBean之间的转换

/**  * json字符串-简单对象到JavaBean之间的转换  */ @Test public void testJSONStrToJavaBeanObj() {      //第一种方式     JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);      String studentName = jsonObject.getString("studentName");     Integer studentAge = jsonObject.getInteger("studentAge");      //Student student = new Student(studentName, studentAge);      //第二种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类     //Student student = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});      //第三种方式,使用Gson的思想     Student student = JSONObject.parseObject(JSON_OBJ_STR, Student.class);      System.out.println(student); }  /**  * JavaBean到json字符串-简单对象的转换  */ @Test public void testJavaBeanObjToJSONStr() {      Student student = new Student("lily", 12);     String jsonString = JSONObject.toJSONString(student);     System.out.println(jsonString); }

2.2.2.json字符串-数组类型与javaBean之间的转换

/**  * json字符串-数组类型到JavaBean_List的转换  */ @Test public void testJSONStrToJavaBeanList() {      //第一种方式     JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);      //遍历JSONArray     List<Student> students = new ArrayList<Student>();     Student student = null;     for (Object object : jsonArray) {          JSONObject jsonObjectone = (JSONObject) object;         String studentName = jsonObjectone.getString("studentName");         Integer studentAge = jsonObjectone.getInteger("studentAge");          student = new Student(studentName,studentAge);         students.add(student);     }      System.out.println("students:  " + students);       //第二种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类     List<Student> studentList = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});     System.out.println("studentList:  " + studentList);      //第三种方式,使用Gson的思想     List<Student> studentList1 = JSONArray.parseArray(JSON_ARRAY_STR, Student.class);     System.out.println("studentList1:  " + studentList1);  }  /**  * JavaBean_List到json字符串-数组类型的转换  */ @Test public void testJavaBeanListToJSONStr() {      Student student = new Student("lily", 12);     Student studenttwo = new Student("lucy", 15);      List<Student> students = new ArrayList<Student>();     students.add(student);     students.add(studenttwo);      String jsonString = JSONArray.toJSONString(students);     System.out.println(jsonString);  }

2.2.3.复杂json格式字符串与与javaBean之间的转换

/**  * 复杂json格式字符串到JavaBean_obj的转换  */ @Test public void testComplexJSONStrToJavaBean(){      //第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类     Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});     System.out.println(teacher);      //第二种方式,使用Gson思想     Teacher teacher1 = JSONObject.parseObject(COMPLEX_JSON_STR, Teacher.class);     System.out.println(teacher1); }  /**  * 复杂JavaBean_obj到json格式字符串的转换  */ @Test public void testJavaBeanToComplexJSONStr(){      //已知复杂JavaBean_obj     Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});     String jsonString = JSONObject.toJSONString(teacher);     System.out.println(jsonString); }

2.3.javaBean与json对象间的之间的转换

2.3.1.简单javaBean与json对象之间的转换

/**  * 简单JavaBean_obj到json对象的转换  */ @Test public void testJavaBeanToJSONObject(){      //已知简单JavaBean_obj     Student student = new Student("lily", 12);      //方式一     String jsonString = JSONObject.toJSONString(student);     JSONObject jsonObject = JSONObject.parseObject(jsonString);     System.out.println(jsonObject);      //方式二     JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(student);     System.out.println(jsonObject1); }  /**  * 简单json对象到JavaBean_obj的转换  */ @Test public void testJSONObjectToJavaBean(){      //已知简单json对象     JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);      //第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类     Student student = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Student>() {});     System.out.println(student);      //第二种方式,使用Gson的思想     Student student1 = JSONObject.parseObject(jsonObject.toJSONString(), Student.class);     System.out.println(student1); }

2.3.2.JavaList与JsonArray之间的转换

/**  * JavaList到JsonArray的转换  */ @Test public void testJavaListToJsonArray() {      //已知JavaList     Student student = new Student("lily", 12);     Student studenttwo = new Student("lucy", 15);      List<Student> students = new ArrayList<Student>();     students.add(student);     students.add(studenttwo);      //方式一     String jsonString = JSONArray.toJSONString(students);     JSONArray jsonArray = JSONArray.parseArray(jsonString);     System.out.println(jsonArray);      //方式二     JSONArray jsonArray1 = (JSONArray) JSONArray.toJSON(students);     System.out.println(jsonArray1); }  /**  * JsonArray到JavaList的转换  */ @Test public void testJsonArrayToJavaList() {      //已知JsonArray     JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);      //第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类     ArrayList<Student> students = JSONArray.parseObject(jsonArray.toJSONString(),             new TypeReference<ArrayList<Student>>() {});      System.out.println(students);      //第二种方式,使用Gson的思想     List<Student> students1 = JSONArray.parseArray(jsonArray.toJSONString(), Student.class);     System.out.println(students1); }

2.3.3.复杂JavaBean_obj与json对象之间的转换

/**  * 复杂JavaBean_obj到json对象的转换  */ @Test public void testComplexJavaBeanToJSONObject() {      //已知复杂JavaBean_obj     Student student = new Student("lily", 12);     Student studenttwo = new Student("lucy", 15);      List<Student> students = new ArrayList<Student>();     students.add(student);     students.add(studenttwo);     Course course = new Course("english", 1270);      Teacher teacher = new Teacher("crystall", 27, course, students);      //方式一     String jsonString = JSONObject.toJSONString(teacher);     JSONObject jsonObject = JSONObject.parseObject(jsonString);     System.out.println(jsonObject);      //方式二     JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(teacher);     System.out.println(jsonObject1);  }  /**  * 复杂json对象到JavaBean_obj的转换  */ @Test public void testComplexJSONObjectToJavaBean() {      //已知复杂json对象     JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);      //第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类     Teacher teacher = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Teacher>() {});     System.out.println(teacher);      //第二种方式,使用Gson的思想     Teacher teacher1 = JSONObject.parseObject(jsonObject.toJSONString(), Teacher.class);     System.out.println(teacher1); }

3.源码

本篇博客的源码都在我的Github上,FastJsonDemo,欢迎大家Fork and Star!

4.总结

好啦,FastJson的基本用法就介绍完了,送人玫瑰,手留余香,学习使我快乐,分享让大家快乐,欢迎大家点赞收藏噢!

Java FastJson 介绍的更多相关文章

  1. FastJson 介绍

    Json详解 Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言.在使用 Java 做 Web 开发时,不可避 ...

  2. Android下HelloWorld项目的R.java文件介绍

    R.java文件介绍 HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R {     public s ...

  3. 深入Java虚拟机读书笔记第一章Java体系结构介绍

    第1章 Java体系结构介绍 Java技术核心:Java虚拟机 Java:安全(先天防bug的设计.内存).健壮.平台无关.网络无关(底层结构上,对象序列化和RMI为分布式系统中各个部分共享对象提供了 ...

  4. java集合介绍(List,Set,Map)

    前言 介绍java的常用集合+各个集合使用用例 欢迎转载,请注明作者和出处哦☺ 参考: 1,<Java核心编程技术(第二版)> 2, http://www.cnblogs.com/Litt ...

  5. Java学习介绍

    Java版本介绍 JavaME:微型版,用于开发小型设备.智能卡.移动终端应用(使用率较低) JavaSE:标准版,用于创建桌面应用(企业用JavaSE创建桌面应用较少) JavaEE:企业版,用于创 ...

  6. 流行的9个Java框架介绍: 优点、缺点等等

    流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...

  7. Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试【转】

    Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试[转] 本文是本人前一段时间做一个简单Java监控工具调研总 ...

  8. java JNI介绍

    java JNI介绍 目录 java JNI介绍 1. Java调用C++代码 2.C++代码调用java代码 JNI是Java Native Interface的全称. oracle文档中是这样描述 ...

  9. Java秘诀!Java逻辑运算符介绍

    运算符丰富是 Java 语言的主要特点之一,它提供的运算符数量之多,在高级语言中是少见的. Java 语言中的运算符除了具有优先级之外,还有结合性的特点.当一个表达式中出现多种运算符时,执行的先后顺序 ...

随机推荐

  1. IIS的安装和配置

    一.首先是安装IIS.打开控制面板,找到“程序与功能” 二. “打开或关闭Windows功能”, 安装 “Internet 信息服务” 三. 安装完后回控制面板里面,找到“管理工具” 四. 双击“In ...

  2. AOP学习总结

    参考:什么是AOP? OOP引入封装.继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合.当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力.也就是说,OOP允许你定义从 ...

  3. Andorid- 反序列化,采用pull解析 xml 文件

    MainActivity.java 主入口,通过获得 XML文件 ,然后将解析后的文件标签以及文本内容拼接到 StringBuffer中,最后显示在TextView上 package com.exam ...

  4. java之面向对象三大特征(封装,继承,多态)

    一.封装 封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类提供的对外方法进行内部信息的操作和访问. 封装可以达到以下目的: 1)隐藏类的实现细节 2)让使用者只 ...

  5. Only a type can be imported. classname resolves to a package的解决

    Only a type can be imported. l1.l2.MyClass resolves to a package ==========这里是解决方案=============== 把生 ...

  6. Oracle Schema Objects——Index

    索引主要的作用是查询优化. Oracle Schema Objects 查看执行计划的权限:查看执行计划plustrace:set autotrace trace exp stat(SP2-0618. ...

  7. Python爬虫基础(三)urllib2库的高级使用

    Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,其中urlopen是模块默认构建的opener. 但是基本的urlopen()方法不 ...

  8. Day22 文件上传下载和javaMail

    day22总结 文件上传概述   1 文件上传的作用 例如网络硬盘!就是用来上传下载文件的. 在智联招聘上填写一个完整的简历还需要上传照片呢.   2 文件上传对页面的要求 上传文件的要求比较多,需要 ...

  9. iOS邮箱、手机号等常用验证功能 判断字符串是否int float

    手机号验证 /* 手机号码 13[0-9],14[5|7|9],15[0-3],15[5-9],17[0|1|3|5|6|8],18[0-9] 移动:134[0-8],13[5-9],147,15[0 ...

  10. js-jquery-SweetAlert2【二】配置与方法

    一.配置 Argument Default value   Description title null 模态对话框的标题.它可以在参数对象的title参数中设置,也可以在swal()方法的第一个参数 ...