一.JSON简介:
1.JSON(javaScript Object Notation)是一种轻量级的数据交换格式;
2.JSON数据作为目前网络中主流的数据传输格式之一,应用十分广泛;
3.JSON可以表示的数据:
(1)对象:对象表示为”{}”扩起来的内容,数据结构为{key:value,key:value,....}的键值对的结构
例如:
{“name”:”zhangsan”,”age”:20}
(2)数组:数组表示为中括号” [ ]”括起来的内容,数据结构为[value,value,value,.........]或[{key:value,...},{key:value,...}]的单值结构
例如:
[{“name”:”zhangsan”,”age”:20},{“name”:”wangwu”,”age”:25}]
即:

    {
“user”:
[
{“name”:”zhangsan”,”age”:20},
{“name”:”wangwu”,”age”:25}
]
}

二.JSON的官方解析
1.把装配好的JavaBean转换成JSON数据格式

2.把JSON转化成JavaBean对象

3.把集合转化为JSON字符串

4.把数组形式的JSON字符串转化为集合对象

例1(JSON官方解析):
(1)先引入所需jar包
(2)编写代码:
转化工具类(包含了4中转换的方法):

package org.json.official;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.bean.Student;public class OfficeJSONUtil {// 1.将java对象转换成JSON数据格式public static String javaToJSON() {Student stu = new Student(1, "王昭君", 89.5);JSONObject jsonObj = new JSONObject(stu);return jsonObj.toString();}// 2.将JSON转化为JavaBean对象public static Student jsonToJavaBean() {Student stu = null;String jsonStr = "{'id':2,'name':'杨玉环','score':95.6}";try {JSONObject jsonObj = new JSONObject(jsonStr);int id = jsonObj.optInt("id");String name = jsonObj.optString("name");double score = jsonObj.optDouble("score");stu = new Student(id, name, score);} catch (JSONException e) {e.printStackTrace();}return stu;}// 3. 把集合转化为JSON字符串public static String listToJSON() {List<Student> list = new ArrayList<Student>();Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,"貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));JSONArray jsonArr = new JSONArray(list);return jsonArr.toString();}// 4.把数组形式的JSON串转化为集合对象public static List<Student> jsonArrayToList() {List<Student> list = new ArrayList<Student>();String jsonStr ="[{\"score\":93.6,\"name\":\"西施\",\"id\":3},{\"score\":95.3,\"name\":\"貂蝉\",\"id\":4},{\"score\":94.6,\"name\":\"平昭阳公主\",\"id\":5}]";try {JSONArray jsonArr=new JSONArray(jsonStr);for(int i=0;i<jsonArr.length();i++){JSONObject jsonObj=jsonArr.optJSONObject(i); //用于获取每一个对象int id=jsonObj.optInt("id");String name=jsonObj.optString("name");double score=jsonObj.optDouble("score");Student stu=new Student(id,name,score);list.add(stu);}} catch (JSONException e) {e.printStackTrace();}return list;}
}

测试代码(主方法):

package org.json.official;import java.util.List;
import org.json.bean.Student;public class TestOfJson {public static void main(String[] args) {//1.JavaBean转化为JSON数据格式String jsonStr= OfficeJSONUtil.javaToJSON();System.out.println("1.JavaBean转化为JSON数据格式:"+jsonStr);// 2.将JSON转化为JavaBean对象Student stu=OfficeJSONUtil.jsonToJavaBean();System.out.println("2.将JSON转化为JavaBean对象:"+stu);// 3. 把集合转化为JSON字符串String jsonStr1=OfficeJSONUtil.listToJSON();System.out.println("3. 把集合转化为JSON字符串:"+jsonStr1);//4.把数组形式的JSON串转化为集合对象List<Student> list=OfficeJSONUtil.jsonArrayToList();System.out.println("4.把数组形式的JSON串转化为集合对象:");for(Student stu1:list){System.out.println(stu1);}}}

运行结果:

三.使用GSON(Google第三方包)解析JSON
首先实例化GSON对象:


1.把Java对象转化为JSON

2.把JSON转化为Java对象


3.把集合类型的Java对象转换成JSON

4.把JSON转换成集合类型的Java集合对象

例2(使用GSON解析JSON):
(1)引入第三方jar包
(2)编写代码:
解析工具类(包含四种转换方法):

package org.json.gson;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.bean.Student;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;public class GSONUtilt {private static Gson gson = new Gson();// 实例化Gson对象// 1.将javaBean转换成JSON格式public static String javaBeanToJSON() {Student stu = new Student(9, "钟无艳", 69.7);String jsonStr = gson.toJson(stu);return jsonStr;}// 2.将JSON转化为Java对象public static Student jsonToJavaBean() {Student stu = gson.fromJson("{\"id\":10,\"name\":\"武则天\",\"score\":94.7}", Student.class);return stu;}//3.把集合类型的Java对象转换成JSONpublic static String listToJSON(){List<Student> list=new ArrayList<Student>();Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,"貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));return gson.toJson(list);}//4.把JSON转换成集合类型的Java集合对象public static List<Student> jsonToList(){String jsonStr="[{\"id\":20,\"name\":\"郭靖\",\"score\":60.5},{\"id\":21,\"name\":\"黄蓉\",\"score\":65.5}]";return gson.fromJson(jsonStr, new TypeToken<List<Student>>(){}.getType());}
}

测试类(主方法):

package org.json.gson;import java.util.List;
import org.json.bean.Student;public class testGoJson {public static void main(String[] args) {// 1.将javaBean转换成JSON格式String jsonStr= GSONUtilt.javaBeanToJSON();System.out.println("1.将javaBean转换成JSON格式"+jsonStr);// 2.将JSON转化为Java对象Student stu= GSONUtilt.jsonToJavaBean();System.out.println("2.将JSON转化为Java对象"+stu);//3.把集合类型的Java对象转换成JSONString jsonStr1= GSONUtilt.listToJSON();System.out.println("3.把集合类型的Java对象转换成JSON"+jsonStr1);//4.把JSON转换成集合类型的Java集合对象System.out.println("4.把JSON转换成集合类型的Java集合对象");List<Student> list=GSONUtilt.jsonToList();for(Student stu1:list){System.out.println(stu1);}}}

运行结果:

四.FsatJSON(阿里巴巴第三方包)解析JSON
1.把Javabean转换成JSON

2.把JSON转换成Javabean

3.把集合对象转换成JSON

4.把数组形式的JSON转换成集合对象

例3(利用FastJSON解析JSON):
(1)引入相应的jar包
(2)编写代码:
接析工具类(包含四种类型转换的方法):

package org.json.fastjson;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.bean.Student;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;public class FastJSONUtil {// 1.把Javabean转换成JSONpublic static String javaBeanToJSON() {Student stu = new Student(11, "虞姬", 96.8);return JSON.toJSONString(stu);}// 2.把JSON转换成Javabeanpublic static Student jsonToJavaBean() {String jsonStr = "{'id':2,'name':'杨玉环','score':95.6}";return JSON.parseObject(jsonStr, Student.class);}// 3.把集合对象转换成JSONpublic static String listToJSON() {List<Student> list = new ArrayList<Student>();Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,"貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));return JSON.toJSONString(list);}// 4.把数组形式的JSON转换成集合对象public static List<Student> jsonToList() {String JSONStr = "[{\"id\":20,\"name\":\"郭靖\",\"score\":60.5},{\"id\":21,\"name\":\"黄蓉\",\"score\":65.5}]";return JSON.parseObject(JSONStr, new TypeReference<List<Student>>() {});}}

测试类(主方法):

package org.json.fastjson;import java.util.List;import org.json.bean.Student;public class TestFastJSON {public static void main(String[] args) {// 1.把Javabean转换成JSONString jsonStr= FastJSONUtil.javaBeanToJSON();System.out.println("1.把Javabean转换成JSON:"+jsonStr);// 2.把JSON转换成JavabeanStudent stu=FastJSONUtil.jsonToJavaBean();System.out.println("2.把JSON转换成Javabean:"+stu);// 3.把集合对象转换成JSONString jsonArrStr=FastJSONUtil.listToJSON();System.out.println("3.把集合对象转换成JSON:"+jsonArrStr);// 4.把数组形式的JSON转换成集合对象System.out.println("4.把数组形式的JSON转换成集合对象:");List<Student> list=FastJSONUtil.jsonToList();for(Student stu1:list){System.out.println(stu1);}}}

运行结果:

转载于:https://blog.51cto.com/13501268/2129213

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,相关推荐

  1. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  2. Java学习笔记二十:Java中的内部类

    Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...

  3. Java学习笔记二十二:Java的方法重写

    Java的方法重写 一:什么是方法的重写: 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法. 语法规则 返回值类型.方法名.参数类型及个数都要与父类继承的 ...

  4. JAVA学习笔记(二十)- 集合 List

    ArrayList 集合 /** ArrayList,实现List接口* 声明数组时必须指定数组中元素的类型,可以是基本数据类型,也可以是引用数据类型* 声明集合时可以不指定其元素的类型,元素类型默认 ...

  5. Java学习笔记二十六:Java多态中的引用类型转换

    Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...

  6. Java学习-11 XML与JSON

    Java学习-11 XML与JSON 1.XML 1.1.简介 可扩展标记语言(eXtensible Markup Language). 特性:1. xml具有平台无关性, 是一门独立的标记语言.2. ...

  7. 【转载】 javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册 - 孤傲苍狼 - 博 http://www.cnblogs.com/xdp-gacl/

    javaweb学习总结(二十二)--基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+Ja ...

  8. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  9. Mr.J-- jQuery学习笔记(二十八)--DOM操作方法(添加方法总结)

    Table of Contents appendTo appendTo(source, target) 源代码 append prependTo ​ ​ ​ ​ prependTo源码 prepend ...

  10. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

最新文章

  1. OpenJDK官方正式宣布AWT、2D、Swing等项目解散
  2. FTPHelper-FTP帮助类,常用操作方法
  3. Struts2中五个重要的常量
  4. 上海临港新片区:新建数据中心CPUE值≤1.25 正建国际互联网数据专用通道
  5. 轻量级锁的加锁和解锁逻辑
  6. CSS3基础知识(一)
  7. 易语言mysql锁表_MySQL的3种锁定机制
  8. java中的v递归的思想,Java中的递归思想 - osc_9lqilnv7的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. Java动态代理之JDK实现和CGlib实现
  10. linux haokande shell,5 个 PowerShell 主题,让你的 Windows 终端更好看
  11. openssl用法详解
  12. 20135337——信息安全设计基础第十四周学习笔记
  13. 2021年茶艺师(中级)考试试卷及茶艺师(中级)模拟试题
  14. iOS逆向--MachoO文件
  15. 2021大厂Java高级面试题及答案,附面试答案
  16. 各应用市场(安卓)的入口整理:
  17. vue项目使用Hbuilder打包苹果IOS-App详细教程
  18. 【华为机试真题 Python实现】查找众数及中位数
  19. 如何在VMware虚拟机中查看Linux的IP地址
  20. 安装RedHat Linux 7.4

热门文章

  1. 存在就不插入_动画:面试官问我插入排序和冒泡排序哪个更牛逼?
  2. 深度系统linux deepin如何按装,U盘快速安装深度操作系统Deepin详细过程 体验不一样的桌面系统...
  3. 冒险者传说pc6java_冒险者传说
  4. python帝国cms_Python的类
  5. ewebeditor 图片上传中 请等待_AC米兰客场3-1那不勒斯,博内拉透露:伊布伤势情况需要等待...
  6. 等参元八节点matlab,四边形八节点等参元matlab程序
  7. java 矩阵求逆_java实现的顺时针/逆时针打印矩阵操作示例
  8. oracle tranc,ORACLE TRUNC()函数
  9. php xml写入数据库中,PHP读取xml并写入数据库示例
  10. 安装mysql 1045_mysql安装出现error Nr.1045