用微信公众平台做分类广告网站,凡科网站官网,哪建网站好,哪家做网站目录
前言
JSON 的数据类型
Java 解析 JSON
常用于解析 JSON 的第三方库
Jackson Gson
Fastjson
使用 Fastjson
Fastjson 的优点
Fastjson 的主要对象
JSON 接口
JSONObject 类
JSONArray 类 前言 1W#xff1a;什么是JSON#xff1f; JSON 指 JavaScrip t对象表…目录
前言
JSON 的数据类型
Java 解析 JSON
常用于解析 JSON 的第三方库
Jackson Gson
Fastjson
使用 Fastjson
Fastjson 的优点
Fastjson 的主要对象
JSON 接口
JSONObject 类
JSONArray 类 前言 1W什么是JSON JSON 指 JavaScrip t对象表示法JavaScript Object Notation; JSON 是一种轻量级的数据交换格式 它基于 ECMAScriptEuropean Computer Manufacturers Association欧洲计算机协会制定的 JavaScript 规范的一个子集采用完全独立于编程语言的文本格式来存储和表示数据 2W为什么使用JSON JSON 作为数据传输在浏览器端非常方便 JSON 只允许使用 UTF-8 编码不存在编码问题 JSON 在语法上与 JavaScript 创建对象相同JavaScript 程序能够使用内建的 eval() 函数用 JSON 数据来生成原生的 JavaScirpt 对象 绝大多数 REST API 都选择 JSON 作为数据传输格式 3WJSON如何使用 JSON 的实例如下面代码所示 {student:[{name:关山岳,age:18},{name:宏满江,age:20}]
} 使用大括号 { } 保存对象每个对象由若干数据组成 每个数据由 key:value 键值对组成 数据之间使用逗号 分隔 使用 \ 进行特殊字符的转义 使用中括号 [ ] 保存数组集合数组集合可以包含多个对象 JSON 的数据类型 数字整数与浮点数 字符串在双引号 中 逻辑值true | false 数组在中括号 [ ] 中 对象在大括号 { } 中 null Java 解析 JSON
需求Java 对象与 JSON 格式的数据之间的相互转换
常用于解析 JSON 的第三方库 Jackson
maven 中央仓库
jackson.jarhttps://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.13/
Jackson 的依赖坐标
dependencygroupIdorg.codehaus.jackson/groupIdartifactIdjackson-core-asl/artifactIdversion1.9.13/version
/dependency Gson
maven 中央仓库
gson.jarhttps://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.5/
Gson 的依赖坐标
dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.5/version
/dependency Fastjson
maven 中央仓库
fastjson.jarhttps://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.25/
Fastjson 的依赖坐标
dependencygroupIdcom.alibaba.fastjson2/groupIdartifactIdfastjson2/artifactIdversion2.0.25/version
/dependency 使用 Fastjson
Fastjson 是阿里巴巴开源 JSON 解析库可以解析 JSON 格式的字符串支持将 Java Bean 序列化为 JSON 字符串也可以从 JSON 字符串反序列化到 JavaBean Fastjson 的优点 速度快Fastjson 相对其他 JSON 库的特点是快从2011年 fastjson 发布1.1.x版本之后其性能从未被其他Java实现的 JSON 超越 使用广泛Fastjson 在阿里巴巴大规模使用在数万台服务器上部署fastjson 在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一 测试完备Fastjson 有非常多的 testcase在1.2.11版本中testcase 超过3321个。每次发布都会进行回归测试保证质量稳定 使用简单Fastjson 的 API 十分简洁 功能完备支持泛型支持流处理超大文本支持枚举支持序列化和反序列化扩展
Fastjson 的主要对象
Fastjson 主要使用 JSON 接口JSONObject 类、JSONArray 类 JSON 接口提供 json 解析操作的入口方法用于原始转换 JSONObject 类封装 json 格式的对象 JSONArray 类封装 json 格式的集合 JSON 接口
JSON 接口的主要作用 将 Java 对象序列化为 JSON 字符串 将 JSON 字符串反序列化为 Java 对象
JSON.toJSONString(Object object)将Java对象序列化为JSON字符串
package com.ape.app;import com.alibaba.fastjson2.JSON;
import com.ape.bean.Student;/*** author MitsueHong* version 1.0* since 2024/3/7*/
public class TestJson {public static void main(String[] args) {//实例化对象Student student new Student();student.setStu_name(关中雪);student.setStu_sex(1);student.setStu_age(22);//转换为json格式的字符串String stuJson JSON.toJSONString(student);System.out.println(stuJson);}}JSON.parseObject(String text)将 JSON 字符串反序列化为 Java 对象
package com.ape.app;import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ape.bean.Student;/*** author MitsueHong* version 1.0* since 2024/3/7*/
public class TestJson {public static void main(String[] args) {//json格式数据String jsonStr {\stu_name\:\日薄西山\,\stu_sex\:\1\,\stu_age\:\24\};//转换为java对象JSONObject jsonObject JSON.parseObject(jsonStr);System.out.println(名称:jsonObject.getString(stu_name));System.out.println(性别:jsonObject.getString(stu_sex));System.out.println(年龄:jsonObject.getString(stu_age));}}JSON.parseArray(String text)将 JSON 字符串反序列化为 JSONArray 集合数组
package com.ape.app;import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;/*** author MitsueHong* version 1.0* since 2024/3/7*/
public class TestJson {public static void main(String[] args) {//json格式数据String jsonStr [{\stu_name\:\日薄西山\,\stu_sex\:\1\,\stu_age\:\24\}, {\stu_name\:\凯楠印象\,\stu_sex\:\1\,\stu_age\:\25\}, {\stu_name\:\陈安\,\stu_sex\:\1\,\stu_age\:\25\}];//转换成JSONArrayJSONArray jsonArray JSON.parseArray(jsonStr);for(int i0;ijsonArray.size();i) {JSONObject object jsonArray.getJSONObject(i);System.out.println(object);}}}JSONObject 类
JSONObject 类主要用于封装 key-value 键值对数据它继承自 LinkedHashMap 接口所以对它的理解和使用可以参考 Map 集合。
常用方法 getString(String key) remove(Object key) JSON.parseObject(String text,ClassT objectClass) //json格式数据String jsonStr {\stu_name\:\日薄西山\,\stu_sex\:\1\,\stu_age\:\24\};//转换为java对象Student student JSON.parseObject(jsonStrStudent.class);System.out.println(名称:student.getStu_name());System.out.println(性别:student.getStu_sex());System.out.println(年龄:student.getStu_age()); JSONArray 类
JSONArray 是 JSON 数组JSON 数组对象中存储的是若干个 JSONObject 对象所以类中的方法主要用于直接操作 JSONObject 对象,主要用于封装数组集合类的数据继承自 ArrayList 类。
常用方法getJSONObject(int index) JSON.parseArray(String text,ClassT objectClass) //json格式数据String jsonStr [{\stu_name\:\日薄西山\,\stu_sex\:\1\,\stu_age\:\24\}, {\stu_name\:\凯楠印象\,\stu_sex\:\1\,\stu_age\:\25\}, {\stu_name\:\陈安\,\stu_sex\:\1\,\stu_age\:\25\}];//转换成JSONArrayListStudent studentList JSON.parseArray(jsonStr,Student.class);for(Student stu : studentList) {System.out.println(姓名: stu.getStu_name());System.out.println(性别: stu.getStu_sex());System.out.println(年龄: stu.getStu_age());}}}