当前位置    :     网站首页    /     科技 > 详情页

如何JSON格式的数据?FastJson是什么?FastJson特点有哪些?

2022-11-30 13:49:15来源:时代新闻网

一、fastjson介绍

​在前后端数据传输交互中,经常会遇到字符串(String)与json,XML等格式相互转换与解析,其中json以跨语言,跨前后端的优点在开发中被频繁使用,基本上可以说是标准的数据交换格式。fastjson 是一个java语言编写的高性能且功能完善的JSON库,它采用一种“假定有序快速匹配”的算法,把JSON Parse 的性能提升到了极致。它的接口简单易用,已经被广泛使用在缓存序列化,协议交互,Web输出等各种应用场景中。

FastJson是啊里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。

特点如下:

能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。

顾名思义,fastjson操作 JSON的速度是非常快的。

无其他包的依赖。

使用比较方便。

二、fastjson使用

maven依赖:

com.alibaba

fastjson

版本根据自己需要

三、fastjson常用API

fastjson API 入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray

public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject

public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean

public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray

public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本

public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本

public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

五、实际应用

1. 对复杂的json串转为java类:

首先有这么一个json字符串,这是一个羊肉汤的菜谱,数据来源于《聚合数据》

要想解析这种复杂的字符串,把它转换成java类的话,首先得先定义好与之相符的java POJO 对象,从上面的json字符串组成来看,我们可以拆分出来四个bean:

最外层的响应:ResponseData

返回结果:ResultBean

数据:DataBean

做菜步骤:StepsBean

将拿到的json字符串数据,用GsonFormat工具来生成java类。

GsonFormat工具的使用可参考该文章:

对应的实体类创建后,接下来就可以使用fastjson中的方法将json串转换成对象使用了

2. 对json串的操作:

在实际开发中,我们经常要对接口返回的json数据,进行操作,获取里面的某些数据。还是以上面的json字符串为例,使用fastjson,对json字符串进行操作

六、fastjson楼栋问题

注意

序列化的类必须有一个无参构造方法

被序列化的类需要有一个无参的构造方法。否则会报错

Exception in thread "main" com.alibaba.fastjson.JSONException: default constructor not found. class User

1

如果你没有重写构造方法,那么每个类都自带一个无参的构造方法,但是如果你重写了一个有参的构造方法,那么默认的无参构造方法会被覆盖,这时候就需要你手动写一个无参的构造方法进去。所以我建议保险起见,需要被json序列化的类最好都手动写一个无参的构造方法进去。

在低版本中转换的时候会直接抛以上异常信息(测试版本:fastjson-1.1.12)。但是高版本(fastjson-1.2.58)就不会报错。

建议在定义javabean时都把无参和有参定义。

标签: fastjson楼栋问题 前后端数据传输交互 GsonFormat工具的使用 fastjson常用API入口类 json以跨语言 啊里巴巴的的开源库 FastJson是哪个公司的 如何JSON格式的数据

电脑

硬件

电竞

数码

四川省攀枝花市委政法委原书记谢忠华被查 疫情关注|安阳市汤阴县告急!中国电信连夜出征 河南19个高速服务区可核酸检测:40元/人,2个小时出结果 【海报】上班防疫 必备指南 郑州金域一区域负责人违反传染病防治法被刑事立案侦查,郑州金域:公司会全力配合警方调查
产品

一次查清,河南高速服务区19个快速核酸检测点!

全国疫情最新消息|1月12日新增确诊190例 河南新增76例本土确诊 天津新增41例本土确诊

获奖啦!金水发布荣获“2021年度中国优秀政务新媒体”

【央视联播关注河南】积极落实防控措施 严控疫情

判决生效执行难 河南一公司账户冻结后仍有千万元资金流出