IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JSON--FastJson--使用/用法/实例/示例 -> 正文阅读

[大数据]JSON--FastJson--使用/用法/实例/示例

原文网址:JSON--FastJson--使用/用法/实例/示例_IT利刃出鞘的博客-CSDN博客

其他网址

JSON格式及FastJson使用详解 - 知乎

FastJson中JSONString、JavaBean、JSONObject、JSONArray的转换关系及API示例 | LarsCheng

简介

说明

? ? ? ? 项目中我们经常会用到JSON,比如:将JSON字符串反序列化为对象、将对象序列华为JSON字符串。

? ? ? ? 实际我们常用的是SpringBoot默认的JakckSon与阿里巴巴的FastJson。Jackson更稳定,基本没有缺陷;FastJson功能更丰富,缺陷多一些。

依赖

compile 'com.alibaba:fastjson:1.2.55'

注意事项

1.序列化的类必须有一个无参构造方法
否则会报错:Exception in thread "main" com.alibaba.fastjson.JSONException: default constructor not found. class
2、避免子类重写父类成员变量,有可能报错
3、fastjson在解析时候会将以is为开头命名属性的is去掉

类的关系

简介

FastJson对于json格式字符串的解析主要用到了一下三个类:

  • JSON:主要实现json对象,json对象数组,javabean,json字符串之间的相互转化。 转换后取值按各自的方法进行。
  • JSONObject:fastJson提供的json对象。JSONObject是Map接口的实现类,可以直接用Map接口方法操作。
  • JSONArray:fastJson提供JSON对象数组,通常是通过迭代器取得其中的JSONObject,再利用JSONObeject的get()方法进行取值。

JSONObject

? ? ? ? JSONObject是Map接口的实现类,类中主要是get()方法。JSONObject相当于json对象,该类中主要封装了各种get方法,通过"键:值"对中的键来获取其对应的值。

JSONArray

? ? ? ? JSONArray的内部是通过List接口中的方法来完成操作的。JSONArray代表json对象数组,json数组对象中存储的是一个个json对象,所以类中的方法主要用于直接操作json对象。比如其中的add(),remove(),containsAll()方法,对应于json对象的添加,删除与判断。 其内部主要由List接口中的对应方法来实现。

? ? ? ? 跟JSONObject一样,JSONArray里面也有一些get()方法,不过不常用,最有用的应该是getJSONObject(int index)方法,该方法用于获取json对象数组中指定位置的JSONObject对象,配合size()方法,可用于遍历json对象数组中的各个对象。 通过以上两个方法,在配合for循环,即可实现json对象数组的遍历。此外JSONArray中也实现了迭代器方法来遍历。 通过遍历得到JSONObject对象,然后再利用JSONObject类中的get()方法,即可实现最终json数据的获取。

JSON

? ? ? ? JSON类主要是实现转化用的,最后的数据获取,还是要通过JSONObject和JSONArray来实现。类中的主要是实现json对象,json对象数组,javabean对象,json字符串之间的相互转化。

字符串转对象

方法作用参数说明
public static final Object parse(String text);把JSON字符串转为JSONObject或JSONArray?
public static final JSONObject parseObject(String text);把JSON字符串转成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz);把JSON字符串转为JavaBeanclazz:指定反序列化后的类
public static final <T> T parseObject(String text, TypeReference?type, Feature… features)把JSON字符串转为JavaBeantype:构造转化类型,features:反序列化额外属性
public static final JSONArray parseArray(String text);把JSON字符串转成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz);把JSON字符串转成JavaBean集合

JSON/Bean互转

方法作用参数说明
public static final Object toJSON(Object javaObject);?将JavaBean转为JSONObject或JSONArray。javaObject:java对象
public static final <T> T toJavaObject(JSON json, Class<T> clazz)将JSONObject或JSONArray转为JavaBeanjson:json对象,clazz:要转化的类型

对象转JSON字符串

方法作用参数说明
public static final String toJSONString(Object object);将JavaBean序列化为JSON文本object: 需要进行序列化的对象javaBean或者JSONObject
public static final String toJSONString(Object object, boolean prettyFormat);将JavaBean序列化为带格式的JSON文本。prettyFormat:是否格式化输出json字符串
public static final String toJSONString(Object object, SerializerFeature… features)将JavaBean序列化为带格式的JSON文本。features:序列化额外属性配置,非必填
public static final String toJSONStringWithDateFormat(Object object, String dateFormat, SerializerFeature… features)序列化时格式化日期dateFormat:日期格式(例如:yyyy-MM-dd)

示例

java对象序列化为string

String jsonString = JSON.toJSONString(user);

字符串转为Map

其他网址

fastjson将json字符串转化成map的五种方法_古柏树下的博客-CSDN博客

方法
Map maps = (Map) JSON.parse(str);
for (Object map : maps.entrySet()) {
? ? System.out.println(((Map.Entry) map).getKey() + "===>" + ((Map.Entry) map).getValue());
}
Map maps = JSON.parseObject(str);
for (Object obj : maps.keySet()) {
? ? System.out.println(obj + "===>" + maps.get(obj));
}
Map maps = JSON.parseObject(str, Map.class);
for (Object obj : maps.keySet()) {
? ? System.out.println(obj + "===>" + maps.get(obj));
}
Map maps = (Map) JSONObject.parse(str);
for (Object map : maps.entrySet()) {
? ? System.out.println(((Map.Entry) map).getKey() + "===>" + ((Map.Entry) map).getValue());
}
JSONObject maps = JSONObject.parseObject(str);
for (Object map : maps.entrySet()) {
? ? System.out.println(((Map.Entry) map).getKey() + "===>" + ((Map.Entry) map).getValue());
}
Map maps = JSONObject.parseObject(str, Map.class);
for (Object map : maps.entrySet()) {
? ? System.out.println(((Map.Entry) map).getKey() + "===>" + ((Map.Entry) map).getValue());
}

JSONObject

其他网址

Java中JSONObject的使用_Qimingweikun的博客-CSDN博客

简介

? ? ? ? JSONObject实现了Map,所以它有Map所有方法。
? ? ? ? getString,getLong等getXXX方法,都是调用FastJson包的TypeUtils.java的方法。例如:TypeUtils.castToString(obj)

常用操作

可以连续调用getJSONObject以获得最终的值。比如:数据如下

{
    "a": {
		"aa":{
			"aaa": 100
		}
	}
    "b": 2
}

获得"aaa"的值的方法:假设字符串为str,则如下:

JSONObject.parseObject(str)
?? ?.getJSONObject("a")
?? ?.getJSONObject("aa")
?? ?.getInteger("aaa");?

所有方法

JSONArray

简介

JSONArray实现了List,所以它有List所有方法。

JSONObject有的方法,JSONArray基本都有。区别是,JSONObject的getXXX的入参是字符串,而JSONArray的入参是index(索引值)。

所有方法

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 08:02:49  更:2021-09-19 08:03:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:10:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码