阿里巴巴开发的开源JSON解析库,由Java语言编写,它主要被设计用于将 Java 对象与 JSON 数据进行相互转换。
PS:它是一个专注于JSON格式的Java库。Fastjson的主要功能包括JSON序列化和反序列化,即可以将Java对象转换为JSON格式的字符串,也可以将JSON字符串转换为Java对象。
PS:某些版本可能存在安全漏洞,因此在使用时需要确保使用的是最新且已修复漏洞的版本。
工具类,提供了一系列的静态方法来序列化和反序列化JSON(对象和数组)字符串和Java对象之间的转换。
常用方法
toJSONString(Object object)
作用:将Java对象序列化为JSON格式的对象或数组字符串。
返回值:序列化后的JSON格式的对象或数组字符串。
示例:
- 注意:。(看一下这个反序列化对象或数组,如果不匹配会发生什么问题,搜一下)
parseObject(String text)
作用:
返回值:
示例:
parseObject(String text, Class<T> clazz)
作用:将JSON对象字符串反序列化为Java对象。
返回值:反序列化后的Java对象。
示例:
PS:User 类中的字段名称必须与 JSON 字符串中的键名称相匹配,否则无法正确映射。
parseArray(String text)
作用:将JSON格式的数组字符串反序列化为集合,不需要指定集合中元素的类型。
返回值:反序列化后的Java集合,集合中的元素类型为Object类型。
示例:
PS:这种方法在你不知道或者不关心数组中元素的具体类型时非常有用。
parseArray(String text, Class<T> clazz)
作用:将JSON格式的数组字符串反序列化为Java中的集合对象,需要指定集合中元素的类型。
返回值:反序列化后的Java集合,集合中元素的类型为指定的类型。
示例:
补充:将JSON字符串反序列化为Java中的数组
说明:fastJson中JSON类并没有直接提供一个将 JSON 字符串转换为 Java 数组的方法,但可以先将 JSON 数组字符串转换为 JSONArray,然后从中提取数据并转换为 Java 数组。
示例:
isValid(String text)
作用:验证JSON字符串的有效性。
返回值:返回值为boolean类型,JSON字符串有效返回true,否则返回false。
示例:
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文本解析为JavaBean
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
使用 处理泛型类型.....
// 将 JSON 字符串转换为 List<User> 对象 ...
前置:
将传入的JSON格式数据转为JSONObject示例:
用于处理JSON对象的类。继承自JSON类,并且实现了Map<String,Object>接口,数据结构为键值对的形式(通过键获取值)。
常用方法
特别说明:因fastJson主要是为了处理序列化和反序列化,对于Map接口的方法实现可能在方法内直接调用其它Map实现类的方法。但对于我们使用者来说,无需太过关注底层实现(fastjson是开源的,可能在不同版本底层实现会有所不同)。
put(String key, Object value)
作用:添加(或修改)一个键值对。
返回值:先前的值(Object类型),如果键已经存在则返回该键对应的旧值,否则返回null。
示例:
remove(Object key)
作用:移除指定的键及其对应的值,如果键不存在则返回null。
返回值:移除的键对应的值(Object类型)。
示例:
get(String key)
作用:根据给定的键(key)获取对应的值(value)。如果键不存在,则返回null。
返回值:具体键对于的值(Object类型)。
示例:
get*系列
作用:提供了类型安全的方法来获取特定类型的值。如果键不存在或值无法转换为请求的类型,这些方法将抛出异常。
返回值:根据调用的get*的方法获取特定类型的值。
示例:
KeySet()
作用:获取所有键集合。
返回值:Set集合类型的键集合。
示例:
size()
作用:获取JSONObject中键值对的数量。
返回值:键值对的数量。
示例:
containsKey(Object key)
作用:判断JSONObject是否包含指定的键。
返回值:一个boolean值。
示例:
containsValue(Object value)
作用:判断JSONObject是否包含指定的值(此方法可能需要遍历整个JSONObject,因此效率可能较低)。
返回值:一个boolean值。
示例:
clear()
作用:移除JSON对象中的所有键值对。
返回值:无。
示例:
toJSONString()
作用:将JSONObject对象转换为JSON格式的字符串。
返回值:转换后JSON字符串。
示例:
用于处理JSON数组的类,继承自JSON类,并且实现了List<Object>接口,数据结构为集合的形式(通过下标获取值)。
常用方法
add(Object value)
作用:
返回值:
示例:
get
size
toJSONString()
作用:将JSONArray转换为JSON字符串。
返回值:转换后JSON字符串。
示例:
toArray()
作用:将JSONArray转换为Java数组。
返回值:转换后的Object数组。
示例:
toJavaList(JSONArray jsonArray)
作用:将JSONArray转换为Java集合。
返回值:转换后的Java List。
示例:
注解(Annotation)是一种用于为Java代码提供元数据的机制,它允许开发者在编译时为类、方法、变量等添加额外的信息,这些信息可以在运行时通过反射机制获取。fastjson提供了几种特定的注解,用于控制JSON序列化和反序列化的行为。
1. fastjson中的注解
fastjson主要提供了以下几种注解:
- :用于JavaBean上,可以规定哪些字段需要忽略或者需要包含,以及配置特性。
- :用于JavaBean的具体字段或者方法上,可以修改某个属性的输出名称,规定其支持序列化或者反序列化与否以及规定序列化顺序。
- :用于构造方法上,标识这个构造方法是用于反序列化的。
- :用于构建者模式(Builder Pattern)的类上,标识这个类是用于构建JavaBean的。
2. 注解的作用
- 控制序列化和反序列化的行为:通过注解,可以指定哪些字段需要被序列化或反序列化,哪些字段需要被忽略。
- 自定义字段名称:在JSON和JavaBean之间映射时,可以使用注解来指定字段的别名。
- 指定序列化顺序:可以通过注解来指定字段的序列化顺序。
- 支持复杂的JSON结构:例如,对于嵌套的JSON对象或数组,可以使用注解来指导fastjson如何正确地解析它们。
3. 注解的具体参数说明
以为例,其主要参数包括:
- :用于指定序列化后的JSON字段名或反序列化时的JSON字段名。例如:。
- :当字段类型为时,用于指定日期时间的格式化字符串。
- :用于指定该字段是否参与序列化。当值为时,该字段不会被序列化到JSON中。
- :用于指定该字段是否参与反序列化。当值为时,该字段在反序列化时不会被赋值。
- :这是一个类型的枚举数组,用于指定该字段的序列化特性。例如,表示当该字段的值为时,仍然会将其序列化到JSON中。
请注意,以上参数并非的全部参数,fastjson的注解还提供了许多其他功能和选项,可以根据具体需求进行配置。此外,、和等注解也有各自特定的参数和用法。建议查阅fastjson的官方文档或相关教程以获取更详细的信息。
无需了解,快速上手使用。
JSON有两种基本结构:JSON对象和JSON数组。
明天补充示例---Java对象中包含对象转为JSON对象,JSON中对象中包含对象转为Java
JSON数组中的数组转为Java,JSON数组中的对象转为Java
还有一大堆JSON数组的示例...
示例(序列化)代码如下所示:
输出结果:{"firstName":"John","lastName":"Doe"}
示例(反序列化)代码如下所示:
输出结果:
John
Doe
输出结果:
Name: John
Age: 30
输出结果:
唱
跳
rap
John
Doe
输出结果:
张三
男
李四
女
JSON是什么?以及JSON结构的说明。
JSON(JavaScript Object Notation)-CSDN博客
序列化和反序列
序列化和反序列化-CSDN博客
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/4435.html