fastjson使用

FastJson

一曲冷凌霜 提交于 2019-12-04 05:36:28
FastJson(https://github.com/alibaba/fastjson)是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 学习文章:【1】 FastJson稍微使用不当就会导致StackOverflow 来源: https://www.cnblogs.com/2019wxw/p/11832992.html

FastJson稍微使用不当就会导致StackOverflow

六眼飞鱼酱① 提交于 2019-12-04 05:35:40
GitHub 9.4k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 9.4k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 9.4k Star 的Java工程师成神之路 ,真的确定不来了解一下吗? 对于广大的开发人员来说,FastJson大家一定都不陌生。 FastJson( https://github.com/alibaba/fastjson)是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 它具有速度快、使用广泛、测试完备以及使用简单等特点。但是,虽然有这么多优点,但是不代表着就可以随便使用,因为如果使用的方式不正确的话,就可能导致StackOverflowError。而StackOverflowError对于程序来说是无疑是一种灾难。 笔者在一次使用FastJson的过程中就遇到了这种情况,后来经过深入源码分析,了解这背后的原理。本文就来从情景再现看是抽丝剥茧,带大家看看坑在哪以及如何避坑。 缘由 FastJson可以帮助开发在Java Bean和JSON字符串之间互相转换,所以是序列化经常使用的一种方式。 有很多时候,我们需要在数据库的某张表中保存一些冗余字段,而这些字段一般会通过JSON字符串的形式保存

fastjson自由:controller上指定active profile,让你想序列化什么字段就序列化什么字段

ⅰ亾dé卋堺 提交于 2019-12-04 03:31:01
一、前言 最近有个需求,其实这个需求以前就有,比如定义了一个vo,包含了10个字段, 在接口A里,要返回全部字段; 但是在接口B里呢,需要复用这个 vo, 但是只需要返回其中8个字段。 可能呢,有些同学会选择重新定义一个新的vo,但这样,会导致vo类数量特别多;你说,要是全部字段都返回吧,则会给前端同学造成困扰。 针对需要排除部分字段,希望能达到下面这样的效果: 1、在controller上指定一个profile 2、在profile要应用到的class类型中,在field上添加注解 3、请求接口,返回的结果,如下: 4、如果注释掉注解那两行,则效果如下: 针对仅需要包含部分字段,希望能达到下面的效果: 1、在controller上指定profile /** * 测试include类型的profile,这里指定了: * 激活profile为 includeProfile * User中,对应的field将会被序列化,其他字段都不会被序列化 */ @GetMapping("/test.do") @ActiveFastJsonProfileInController(profile = "includeProfile",clazz = User.class) public CommonMessage<User> test() { User user = new User(); user

JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格

偶尔善良 提交于 2019-12-03 21:29:25
JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 Java是面向对象的语言,所以我们更多的在项目中是以对象的形式处理业务的,但是在传输的时候我们却要将对象转换为 JSON 格式便于传输,而且 JSON 格式一般能解析为大多数的对象格式,而不在乎编程语言。 现在主流的对象与 JSON 互转的工具很多,我们主要介绍今天的主角,阿里巴巴的开源库 - Fastjson。Fastjson是一个Java库,可用于将Java对象转换为其JSON表示。它还可用于将JSON字符串转换为等效的Java对象。Fastjson可以处理任意Java对象,包括您没有源代码的预先存在的对象。 1 | 0 什么是 Fastjson? 阿里官方给的定义是, fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 2 | 0 Fastjson 的优点 速度快 fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1

【FastJSON】解决FastJson中“$ref 循环引用”的问题

旧城冷巷雨未停 提交于 2019-12-03 18:26:51
【需求与环境描述】 0、开发环境 SSH,EasyUI,MySQL 1、需求要求: (1)首先获取所有的贷款订单数据,即List <LoanOrder>。 (2)然后从单个贷款订单实体LoanOrder去访问贷款人实体Loaner的信息。 2、实体之间的关系描述 (1)LoanOrder实体与Loaner实体是双向的多对一和一对多关系。 (2)LoanOrder是“多方”,其中的关系属性为“private Loaner loaner”。 (3)Loaner是“一方”,其中的关系属性为“Set<LoanOrder> orders”。 3、代码示例 (1) 贷款订单LoanOrder代码 @Entity @Table(name = "t_bp_loan_order") public class LoanOrder implements java.io.Serializable { /*省略其他次要属性*/ private Loaner loaner; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "LOANER_ID") public Loaner getLoaner() { return this.loaner; } } (2) Loaner方代码 @Entity @Table(name = "t_bp_loaner")

springboot(四).配置FastJson自定义消息转化器

匿名 (未验证) 提交于 2019-12-03 00:40:02
配置FastJson自定义消息转化器 一.fastJson简介 fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件。 它是目前json解析最快的开源组件没有之一! 在这之前jaskJson是命名为快速操作json的工具,而当阿里巴巴的fastJson诞生后jaskjson就消声匿迹了,不过目前很多项目还在使用。 今天,我们使用fastJson来配置消息转换器,过滤并修改返回的消息 二.依赖导入 <!--fastjson依赖添加--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.31</version> </dependency> 三.配置类编写 新建 FastJsonConfiguration 配置信息类,添加 @Configuration 注解让SpringBoot自动加载类内的配置,有一点要注意我们继承了 WebMvcConfigurerAdapter 这个类,这个类是SpringBoot内部提供专门处理用户自行添加的配置,里面不仅仅包含了修改视图的过滤还有其他很多的方法,还包括拦截器,过滤器等配置 /** *

fastjson基本使用

强颜欢笑 提交于 2019-12-02 22:30:31
fastjson基本使用 依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.39</version> </dependency> 简单测试 为null的属性不会被打印。 package com.ytkj.mozq_excel_server.pojo.car; import java.math.BigDecimal; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /**

fastjson 的使用总结

匿名 (未验证) 提交于 2019-12-02 21:53:52
最近在开发过程中使用了大量的 json 作为前后端数据交换的方式,由于之前没有对 json 做过系统的学习,所有在使用过程中查阅了大量的文档与资料,这里主要记录了我在开发后对 json 以及 fastjson 使用的总结 JSON (javaScript Object Notation)是一种轻量级的数据交换格式。主要采用键值对( {"name": "json"} )的方式来保存和表示数据。 JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质上是一个字符串。更多简介见 介绍JSON 。 在日志解析,前后端数据传输交互中,经常会遇到字符串(String)与 json , XML 等格式相互转换与解析,其中 json 以跨语言,跨前后端的优点在开发中被频繁使用,基本上可以说是标准的数据交换格式。 fastjson 是一个java语言编写的高性能且功能完善的JSON库,它采用一种“假定有序快速匹配”的算法,把 JSON Parse 的性能提升到了极致。它的接口简单易用,已经被广泛使用在缓存序列化,协议交互,Web输出等各种应用场景中。 fastjson API 入口类是 com.alibaba.fastjson.JSON ,常用的序列化操作都可以在 JSON 类上的静态方法直接完成。 public static final Object parse (

java对象转为json字符串

匿名 (未验证) 提交于 2019-12-02 21:52:03
1.使用fastjson开源json工具类库 2.java类未添加get()和set()方法,java对象初始化时,使用fastjson解析,得到的json字符串有时为空{} 3.Java对象转为json字符串,初始化时最好添加get()和set()方法,避免错误 来源:博客园 作者: cty136 链接:https://www.cnblogs.com/cty136/p/11521264.html

Fastjson致命缺陷

笑着哭i 提交于 2019-12-02 14:42:02
前言 这个周末被几个技术博主的同一篇公众号文章 fastjson又被发现漏洞,这次危害可导致服务瘫痪! 刷屏,离之前的漏洞事件没多久,FastJson 又出现严重 Bug。目前项目中不少使用了 FastJson 做对象与JSON数据的转换,又需要更新版本重新部署,可以说是费时费力。与此同时,也带给我新的思考,面对大量功能强大的开源库,我们不能盲目地引入到项目之中,众多开源框架中任一个不稳定因素就足以让一个项目遭受灭顶之灾。趁着周末,在家学习下同样具备对象JSON相互转换功能的优秀开源框架 Gson,并且打算将今后项目使用 FastJson 的地方逐渐换成使用 Gson,记录下学习总结的内容,希望对小伙伴也有所帮助。 本文所涉及所有代码片段均在下面仓库中,感兴趣的小伙伴欢迎参考学习: https : / / github . com / wrcj12138aaa / gson - actions 版本支持: - JDK 8 - gson 2.8 .5 - junit 5.5 .1 - Lomok 1.18 .8 Gson 简介 在正式介绍 Gson 之前,我们可以先从官方的wiki看下 Gson 的描述,了解它是什么? Gson is a Java library that can be used to convert Java Objects into their JSON