Fastjson

FastJson的使用 FastJSON的介绍与使用 阅读详情

Fastjson 是一个java类库,可以被用来把Java对象转换成Json方式.也可以把Json字符串转换成对应的Java对象.Fastjson可以作用于任何Java对象,包含没有源代码已存在的对象.

目标

  • 在服务器端或是adroid提供一个高性能转换
  • 提供toJSONString() 和 parseObject()简单方法可以在Java对象和Json之前相互转换
  • 允许已存在未修改的对象转换从JSON中转换
  • 支持Java泛型
  • 允许自定义对应的展示
  • 支持任意复杂对象(深层次继承和泛型)

常见问题

1. 怎么获得fastjson?

你可以通过如下地方下载fastjson:

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version> 1.2.70</version>
</dependency>

android版本

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.68.android</version>
</dependency>

2. fastjson主要的API哪些?

fastjson入口类是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,和parseObject。

package com.alibaba.fastjson;
public abstract class JSON {
      public static final String toJSONString(Object object);
      public static final <T> T parseObject(String text, Class<T> clazz, Feature... features);
}

序列化:

String jsonString = JSON.toJSONString(obj);

反序列化:

VO vo = JSON.parseObject("...", VO.class);

泛型反序列化:

import com.alibaba.fastjson.TypeReference;

List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});

3. 哪里找fastjson的使用例子

fastjson的使用例子看这里:https://github.com/alibaba/fastjson/wiki/Samples-DataBind

4. fastjson的性能如何?

fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果看这里:https://github.com/eishay/jvm-serializers/wiki

自行做性能测试时,关闭循环引用检测的功能。

JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect)
VO vo = JSON.parseObject("...", VO.class, Feature.DisableCircularReferenceDetect)

这里有jackson作者cowtowncoder等人对fastjson的性能评价: https://groups.google.com/forum/#!searchin/java-serialization-benchmarking/fastjson|sort:date/java-serialization-benchmarking/uhUAOr1sqn0/5Y56nXKkpVIJ https://groups.google.com/forum/#!topic/java-serialization-benchmarking/8eS1KOquAhw

5. fastjson性能比gson怎样?

fastjson比gson快大约6倍,测试结果上这里:https://github.com/eishay/jvm-serializers/wiki/Staging-Results 。

6. fastjson可以运行在android上么?

fastjson有专门的for android版本,去掉不常用的功能。jar占的字节数更小。git branch地址是:https://github.com/alibaba/fastjson/tree/android 。

7. fastjson序列化的需要像json-lib一样配置java bean的序列化么?

不需要,fastjson的序列化和反序列化都不需要做特别配置,唯一的要求是,你序列化的类符合java bean规范。

8. fastjson如何处理日期

fastjson处理日期的API很简单,例如:

JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")

使用ISO-8601日期格式

JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);

全局修改日期格式

JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);

反序列化能够自动识别如下日期格式:

  • ISO-8601日期格式
  • yyyy-MM-dd
  • yyyy-MM-dd HH:mm:ss
  • yyyy-MM-dd HH:mm:ss.SSS
  • 毫秒数字
  • 毫秒数字字符串
  • .NET JSON日期格式
  • new Date(198293238)

9. 如何定制序列化?

你可以使用SimplePrePropertyFilter过滤字段,详细看这里:https://github.com/alibaba/fastjson/wiki/%E4%BD%BF%E7%94%A8SimplePropertyPreFilter%E8%BF%87%E6%BB%A4%E5%B1%9E%E6%80%A7

关于定制序列化,详细的介绍看这里: https://github.com/alibaba/fastjson/wiki/%E5%AE%9A%E5%88%B6%E5%BA%8F%E5%88%97%E5%8C%96

10. 当对象存在引用时,序列化后的结果浏览器不支持,怎么办?

使用SerializerFeature.DisableCircularReferenceDetect特性关闭引用检测和生成。例如:

String  jsonString = JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);

11. IE 6不支持JSON带中文字符串,要怎么处理?

fastjson提供了BrowserCompatible这个配置,打开之后,所有的中文都会序列化为\uXXXX这种格式,字节数会多一些,但是能兼容IE 6。

String  jsonString = JSON.toJSONString(obj, SerializerFeature.BrowserCompatible);

12. fastjson 如何处理超大对象和超大JSON文本

fastjson提供了Stream API,详细看这里 https://github.com/alibaba/fastjson/wiki/Stream-api

13. 使用@JSONField定制序列化

fastjson提供了使用Annotation定制序列化和反序列化的功能。https://github.com/alibaba/fastjson/wiki/JSONField

14. 将对象中的空值输出

缺省情况下fastjson不输出对象的空值的,如果你需要输出空值,看这里 https://github.com/alibaba/fastjson/wiki/WriteNull_cn

15. 返回较大整数javascript丢失精度问题

当返回的整数大于9007199254740991或者小于-9007199254740991时,在javascript中会丢失精度。此时使用SerializerFeature.BrowserCompatible能自动将数值变成字符串返回,解决精度问题。

Scala中应用

当用到case class时一定要上加上@BeanProperty 做一个javaBean生成get set方法处处理

import scala.beans.BeanProperty
case class StoreGroup(
                                @BeanProperty store_id: String,
                                @BeanProperty link_id: String,
                                @BeanProperty var track_id: String = ""
                              ) 

参考: https://github.com/alibaba/fastjson/wiki 

Spring Boot项目从fastjson1.x升级到fastjson2,Redis序列化配置避坑指南 本文详细介绍了Spring Boot项目从fastjson1.x升级到fastjson2时Redis序列化配置的关键修改点和避坑指南。重点解析了fastjson2的核心变化,如包结构重构、SerializerFeature废弃等,并提供了自定义FastJson2JsonRedisSerializer实现和Redis配置类适配方案,帮助开发者顺利完成升级并优化性能。 阅读详情

相关推荐

FastJson2.0介绍和使用

FASTJSON v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,

全栈行动派的博客 6836

FastJson详解

一、Fastjson介绍 Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象。Fastjson可以与任意Java对象一起使用,包括您没有源代码的现有对象。 关于Json的处理,还有Google开发的Gson包,其他形式的如net.sf.json包,都可以实现json的转换。方法名称不同而已,最后的实现结果都是一样的。...

Lyouths的移动笔记本 9655

Spring Boot项目从fastjson升级到fastjson2的实战指南

JSON序列化与反序列化是现代Web应用开发中的核心技术,它负责在客户端与服务器之间高效、安全地传输结构化数据。其原理是通过特定的算法将对象转换为字符串进行传输,并在接收端还原为对象。这项技术的价值在于实现了跨平台、跨语言的数据交换,是RESTful API、微服务通信和数据持久化的基础。在实际应用场景中,开发者需要根据性能、安全性和易用性选择合适的JSON库。本文将聚焦于**fastjson2**这一高性能JSON库,并探讨其在**Spring Boot**项目中的集成与配置。通过升级到fastjson2

weixin_34416754的博客 480

Json详解以及fastjson使用教程

Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。在使用Java做Web开发时,不可避免的会遇到Json的使用。下面我们就简单讲一下Json的使用以及fastjson.jar包的使用。 一:JSON形式与语法 1.1:JSON对象 我们先来看以下数据: { "ID": 1001, "name"...

srj1095530512的博客 22万+

Maven依赖冲突排查:从fastjson升级到fastjson2的实战避坑指南

在Java项目开发中,依赖管理是构建稳定应用的基础。Maven作为主流的构建工具,其依赖决议机制遵循“最近定义优先”原则,这可能导致间接依赖覆盖显式声明的版本,引发运行时类加载异常。理解这一原理对于解决开发环境与生产环境行为不一致的问题至关重要,尤其是在进行安全升级或框架迁移时。例如,将fastjson升级至fastjson2的过程中,常见的ClassNotFoundException或NoSuchMethodError往往源于依赖树中残留的旧版本库。通过系统化的排查,如使用mvn dependency:t

weixin_33957648的博客 532

Java中的Fastjson:高级进阶篇

Fastjson是一个开源的Java库,用于序列化Java对象为JSON字符串,以及将JSON字符串反序列化为Java对象。高性能:Fastjson在性能上通常优于其他流行的JSON处理库,如Jackson和Gson。易用性:Fastjson提供了简洁的API,使得JSON处理变得简单直观。兼容性:Fastjson支持Java的各种数据类型,并且能够很好地处理复杂的数据结构。Fastjson允许我们自定义序列化器来控制特定类型的序列化行为。下面的例子展示了如何自定义序列化器。

java专栏 1457

Java工具库——FastJson的40个常用方法

那些想看却没看的书,在心里摆满一个图书馆。。。。。。

IT小辉同学 9097

白盒测试逻辑覆盖之谓词覆盖、子句覆盖、三类有效字句覆盖等知识点

本篇笔记会简化书本上的概念,用容易理解的方式来说明,有些例子打字麻烦,我会直接放图片! 目录 基础知识: 谓词覆盖predicate coverage 子句覆盖 clause coverage 组合覆盖 combinatorial coverage 有效字句覆盖Active Clause Coverage 广义有效子句覆盖(General Active Clause Coverage) 相关性有效子句覆盖(Correlated Active Clause Coverage) 限制性有效

weixin_46019681的博客 2664

FASTJSON v2详解

FASTJSON 2是一个性能极致并且简单易用的Java JSON库。FASTJSON 2是FASTJSON项目的重要升级,和FASTJSON 1相比,性能有非常大的提升,解决了autoType功能因为兼容和白名单的安全性问题。性能极致,性能远超过其他流行JSON库,包括jackson/gson/org.json,性能数据: https://github.com/alibaba/fastjson2/wiki/fastjson_benchmark。

lw的博客 5273

大数据实战:Python与MySQL在足球赔率分析中的高效应用

本文详细介绍了如何利用Python与MySQL进行大数据实战,实现足球赔率的高效分析。通过对比Excel处理的局限性,阐述了数据库在处理百万级数据时的速度优势。文章提供了从环境搭建、使用pymysql连接数据库、利用pandas进行数据清洗与分析,到构建自动化分析系统的完整流程,旨在帮助读者将大数据技术应用于实际业务场景,显著提升数据处理与洞察效率。

weixin_29080843的博客 445

PostgreSQL+PostGIS实战:5分钟搞定Shapefile数据导入(附避坑指南)

本文详细介绍了如何使用PostgreSQL和PostGIS快速导入Shapefile空间数据,包括5分钟标准流程和常见问题解决方案。通过实战案例和避坑指南,帮助GIS工程师高效处理矢量数据导入中的编码、几何类型、坐标系等典型问题,提升空间数据库管理效率。

weixin_42565652的博客 399

再见 Fastjson,Fastjson 2 正式发布,性能炸裂…

1. FASTJSON 2.0介绍 FASTJSON 2.0是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库,同一套API支持JSON/JSONB两种协议,JSONPath是一等公民,支持全量解析和部分解析,支持Java服务端、客户端Android、大数据场景。 FASJTONS2代码 https://github.com/alibaba/fastjson2/releases/tag/2.0.1 JSONB格式文档 https://github.com/ali

qwer123451234123的博客 8988

基于Apache SeaTunnel构建CDC数据同步管道

Apache SeaTunnel是一个数据集成开发平台,其发展经历了几个重要阶段:ETL时代(90年代):面向结构化数据库的数据同步,用于构建数据仓库。MPP和分布式技术流行:使用技术如Hive进行数据仓库的构建。此阶段主要使用mapreduce程序进行数据搬运和转换。数据湖技术流行:重视数据集成,强调先同步数据至数据湖仓储,再进行业务面向的转换和设计。CDC,即变更数据捕获,是一种捕获数据库变更事件(如插入、更新、删除)的技术。

weixin_54625990的博客 2172

FastJson

FastJson 是阿里巴巴开源的高性能 JSON 处理库,在 Java 环境下提供了对象与 JSON 文本之间的快速转换能力。本文通过一个完整的 Demo,演示 FastJson 在 JavaBean、JSONObject、JSONArray 以及 JSON 文本之间的相互转换。本文通过一个完整的 Demo 演示了 FastJson 在 JavaBean、JSONObject、JSONArray 以及 JSON 文本之间的相互转换。

ywl470812087的博客 13万+

Qt实战:用QTreeView+QStandardItemModel实现多级多列文件浏览器(附完整代码)

本文深入探讨了使用Qt的QTreeView与QStandardItemModel构建多级多列文件浏览器的完整实践。通过分析模型/视图框架的优势,详细演示了从基础框架搭建、模拟数据填充,到对接真实文件系统实现懒加载的全过程。文章还涵盖了自定义委托、多列排序、右键菜单等高级定制技巧,并提供了性能优化建议和完整的代码示例,帮助开发者打造功能强大且高效的工业级文件管理界面。

weixin_29021291的博客 424

全志 camera: 4路AHD摄像头转MIPI

TP2815 驱动模块主要实现将 4 路的 AHD/TVI/CVBS Camera 的数据转换为 MIPI 数据,从而实现在 T527 端来对数据进行处理和送显。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 9095

FastJson 框架详解

如果使用 Spring MVC 来构建 Web 应用并对性能有较高的要求的话,可以使用 Fastjson 提供的来替换 Spring MVC 默认的以提高 @RestController @ResponseBody @RequestBody注解的 JSON序列化速度。下面是配置方式,非常简单。@Override//自定义配置...注:如果你使用的 Fastjson 版本小于1.2.36的话(强烈建议使用最新版本),在与Spring MVC 4.X 版本集成时需使用。

qq_41826542的博客 2484

9 硬件工程师笔面试高频知识考点真题解析——运算放大器

运算放大器(运放)摘要 运放是一种高增益、差分输入的模拟集成电路,具有虚短(线性区输入电压相等)和虚断(输入电流为零)特性,支持负反馈(线性放大)和开环/正反馈(饱和区比较)两种工作模式。关键特性包括高输入阻抗、低输出阻抗,理想运放参数(如无限增益)与实际参数(如有限带宽)的差异。 选型要点: 信号特性:直流/低频信号关注失调电压(Vos)、温漂;高频信号侧重带宽(GBW)和压摆率(SR)。 电源条件:单/双电源供电、电压范围及功耗需求(如电池设备需低静态电流)。 精度与噪声:微弱信号需低噪声运放,高精度场

XU157303764的博客 1675

fastjson 2

1. FASTJSON 2.0介绍 FASTJSON 2.0是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库,同一套API支持JSON/JSONB两种协议,JSONPath是一等公民,支持全量解析和部分解析,支持Java服务端、客户端Android、大数据场景。 FASJTONS2代码 https://github.com/alibaba/fastjson2/releases/tag/2.0.1 JSONB格式文档 https://github.com/ali

qq_46494427的博客 2646

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

FastJson 你怎么了?

其次,从试图解决这个问题的 3 个 PR 的时间线,分别在 2018 年,2019 年,2020 年。当然遇到这个问题的时候,我在仔细观察排除了非 fastjson 的问题以后,这次我学聪明了,我直接来到了 Github 的 issues 区,搜索。先声明,这真不是尬黑,为了文章效果,故意网上扒些黑料拼凑起来,本文所提到的问题,都来源于本人最近项目的真实经历。我觉得这也是个槽点,FastJson 好像并没有一个稳定维护的版本,遇到问题总是在升级,升级的过程中也没做好质量控制,又引入了新的问题。

java_121388的博客 1737

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

FastJSON2 > FastJSON 好在何处

FastJSON2在性能、安全性、功能、兼容性和内存管理等方面相比 FastJSON 都有显著的提升。对于需要高性能 JSON 解析和序列化的应用场景,特别是在安全性要求较高的情况下,FastJSON2 是一个更好的选择。通过本文的介绍,希望开发者能够更好地理解和利用 FastJSON2 提供的优势,为项目带来更高的性能和安全性。选择 FastJSON2 可以带来如下主要优势:更高的性能:优化的序列化和反序列化算法,提高了处理速度。更强的安全性:增强的黑名单机制和类型检测,确保数据解析的安全。

新生代码农的博客 5569

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring Boot项目从Fastjson1升级到Fastjson2实战指南

JSON序列化与反序列化是Java后端开发中处理网络通信和数据交换的基础技术,其核心原理是将内存中的对象结构转换为可传输或存储的字符串格式,反之亦然。这项技术的价值在于实现跨平台、跨语言的数据交互,是构建现代分布式系统和微服务架构的基石。在Java生态中,Fastjson因其高性能和易用性曾被广泛采用,但其1.x版本因AutoType机制引发的安全漏洞问题频发,例如1.2.84等版本虽经修复,但安全风险依然存在。因此,将项目升级至经过彻底重构、默认关闭AutoType且性能更优的Fastjson2,对于提升

weixin_30596735的博客 496

基于fastJson的工具类

基于fastjson的json工具类 package com.abc.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import co...

K的博客 3276

FASTJSON 2.0 新版本

FASTJSON 2.0是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库,同一套API支持JSON/JSONB两种协议,JSONPath是一等公民,支持全量解析和部分解析,支持Java服务端、客户端Android、大数据场景。

Dily_Su的博客 9948
上一篇: phoenix概览
下一篇: Flink1.14 - 生产就绪检查清单
大怀特
博客等级 码龄6年 5787粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大怀特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值