fastjson

fastjason常用方法

不羁的心 提交于 2019-12-05 06:22:15
背景 fastjson爆出重大漏洞,攻击者可使整个业务瘫痪 漏洞描述 常用JSON组件FastJson存在远程代码执行漏洞,攻击者可通过精心构建的json报文对目标服务器执行任意命令,从而获得服务器权限。此次爆发的漏洞为以往漏洞中autoType的绕过。 影响范围 FastJson < 1.2.48 最近关于fastjson的消息,引起了很多人的关注!很多开发者才猛然发现,fastjson已经深入到我们开发工作的方方面面。那么除了赶快升级你的json外,我们来挖挖fastjson最常用的用法。 fastjson常用方式 1.maven依赖(记得升级到1.2.48以上版本哦) <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> 2.FastJson对于json格式字符串的解析主要用到了一下三个类: (1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。 (2)JSONObject:fastJson提供的json对象。 (3

fastjson带泛型反序列化的用法

ⅰ亾dé卋堺 提交于 2019-12-05 00:06:01
这个问题之前就遇到了,虽然猜到有现成解决办法,但是一直没有正面解决,今天找到了解决方案,mark一下。 主要就是一个TypeReference的使用。 直接上代码比较容易看懂。 1.泛型 public class PageEntity<T> { private List<T> result; public List<T> getResult() { return result; } public void setResult(List<T> result) { this.result = result; } } 这是一个示例的模板类 2. 反序列化 String json = readToString(new File(getRoodDir() + "kw.json")); PageEntity<CaterEsSource> pageEntity = JSON.parseObject(json, new TypeReference<PageEntity<CaterEsSource> >(){}); CaterEsSource试自定义的一个类。 代码自己应该说的很清楚了。 参考博客: https://www.jianshu.com/p/0dc13273e931 来源: https://www.cnblogs.com/betterwgo/p/11890238.html

Fastjson 处理空字段

淺唱寂寞╮ 提交于 2019-12-04 23:06:30
Fastjson的SerializerFeature序列化属性 QuoteFieldNames———-输出key时是否使用双引号,默认为true WriteMapNullValue——–是否输出值为null的字段,默认为false WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null Fastjson实际处理方式 1.@JSONField(serialzeFeatures= {SerializerFeature.WriteMapNullValue}) fastJson默认是不输出value为null的字段,如果在该字段上加上这个注解,则会输出 2.加过滤器,可以让value为null的字段都输出空字符串 public class User { private String name; private Integer age; public String getName() { return name; } public void

关于fastjson

爷,独闯天下 提交于 2019-12-04 21:12:44
关于fastjson 需求: 从api接口获取到的数据,返回的都是json的字符串,由于需要对这些字符串进行处理,并存进数据库中。 处理: 方法一:可以进行字符串的处理,将处理好的字符串,按照实体类的set和get方法进行设置到类,执行insert方法添加到数据库。 方法二:最简单的方法直接将字符串映射成为实体类。具体操作: 实体类 javaBean = JSON.parseObject(json, 实体类.class); 其中实体类是你需要映射的对象类,json是得到的字符串。eg: String json=getDataByUrl(apiUrl);//通过接口返回字符串。 User javaBean=JSON.parseObject(json,User.class); 后面的User.class证明是将得到的json数据按照类型分别映射给User类。需要注意的是如果你的json字符串里面某个数据类型是int类型,则在实体类中必须也是int类型,举例:如果username是string类型(json),则你的实体类里面的数据类型也必须是String username。 *以上是最简单的映射方法,目前尚未解决json里面如果类型是string类型,而实体类里面是int,该如果操作的问题* 但是我现在json里面的数据是多个,自然想到了用list进行处理

fastJson 常用API使用

旧城冷巷雨未停 提交于 2019-12-04 18:28:16
1、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> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public

alibaba fastjson(json序列化器)序列化部分源码解析-1-总体分析

北城以北 提交于 2019-12-04 14:37:06
fastjson官方地址: http://code.alibabatech.com/wiki/display/FastJSON/Home 从javaeye上看到了阿里一位人士写的fastjson,特别是其中如何将java对象序列化成json字符串这段。笔者比较关注,因为在笔者的项目中就用了一个json序列化器(造的轮子)。就下载下来看了一看,先不说和笔者所用的轮子有何区别,单就用了一个简单的测试器,来测试一下两者的处理速度。测试代码就不贴了,简单地说下测试结果。在jvm充分优化的情况下(for循环执行了很多次之后),笔者所使用的java序列化器处理速度不是很均匀,在结尾有短暂的变化(可能与虚拟机回收有关系);而fastjson在后面的处理过程当中,一般很均匀(后来发现与使用的buf分配方式有关)。最主要的区别莫在于,fastjson的速度那是不能对比了。 经过分析源码之后,发现fastjson在处理json优化上面还是下了很大的工夫的。笔者准备从以下几个方面对fastjson作一个简单的解析,也让使用fastjson的同学对fastjson有一个简单的认识。 1 总体分析 分析json序列化的总体思路和解析过程 2 性能分析A 针对字符生产部分(即outWriter)对不同类型数据的处理和与性能相关处理部分 3 性别分析B 针对序列化过程部分(即objectSerializer

springboot redis笔记

佐手、 提交于 2019-12-04 13:37:24
1、首先创建一个springboot项目,就不解释了,然后添加一个redis引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、在配置文件中添加redis的连接配置信息 spring: redis: #数据库索引 database: 0 host: 192.168.1.1 port: 6379 password: 123456 3、然后创建一个控制器 就这么简单,但是你会发现,存入redis是一堆乱七八糟的玩意。 方式一: @Autowired(required = false) public void setRedisTemplate(RedisTemplate redisTemplate) { RedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate

还在用AJAX+Json,改用AJAX+Beetl吧

ぐ巨炮叔叔 提交于 2019-12-04 09:13:40
浏览器通过AJAX,服务器返回json数据,无刷新的更新视图的这种模式在WEB开发中我已经用了很长时间了,记得最早是08年的时候用的,当时传递JSON数据让我眼前一亮。这种方式是只需要采用工具包将模型序列化成json格式就行,js UI库总能识别这种格式,轻易的生成新的视图片段。 然而时过境迁。这种传递AJAX JSON方式渐渐有了新的问题。 JSON序列化库无法完美的序列化模型对象。序列化库总期望输入一个Object,但实际上前端有可能需要多个Object,这样,你不得不再创建一个序列化专用的Object。 另外,序列化逻辑都很简单,就是将所有对象属性都序列化。尽管JSON Lib 能提供属性过滤,属性格式化等,但扪心自问,远远不如模板渲染功能完善。模板语言提供了丰富的语句和扩展来处理模型对象。另外JSON Lib在序列化对象互相引用,处理的也不好。在模板语言里,这将不存在问题。总而言之,开发人员为了序列化JSON,不得不创建新的视图对象,不得不侵入原有的模型以规定序列化逻辑。以我认为最好的FastJSON工具为列,你能看到各种开发者问的问题(我直接从fastjson论坛行找来最近的帖子). -在使用 fastjson转map,怎么让map中为null的值等于""呢 -FastJson 1.2.4 日期类型 ISO8601格式序列化问题... - 建议

Fastjson对复杂对象进行序列化

倖福魔咒の 提交于 2019-12-04 08:17:11
一、什么是fastjson fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 二、fastjson的优点 2.1 速度快 fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。 2.2 使用广泛 fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。 2.3 测试完备 fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。 2.4 使用简单 fastjson的API十分简洁。 String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseobject("{...}", VO.class); //反序列化 2.5 功能完备 支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。 三、下载和使用 你可以在maven中央仓库中直接下载: Http://repo1.maven.org/maven2/com/alibaba

java中常见的JSON操作

三世轮回 提交于 2019-12-04 06:40:40
一、什么是Json Json是指JavaScript对象表示法(Java Script Object Notation) Json是轻量级的文本数据交换格式 Json独立于语言和平台:Json解析器和Json库支持许多不同的编程语言 Json具有自我描述性,更易理解 二、Java中操作Json的几种方式 FastJson 阿里巴巴开发的 JSON 库,性能十分优秀 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> Gson 谷歌开发的 JSON 库,功能十分全面 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency> net.sf.json 最常见