`

Fastjson反序列化泛型类型时候的一个问题

    博客分类:
  • java
阅读更多
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.TypeReference;

public class GenericTypeTest {

	static class Foo<T>{
		private T t;

		public T getT() {
			return t;
		}

		public void setT(T t) {
			this.t = t;
		}
		
	}
	@Test
	public void test_FirstWithClass() {
		Foo<List<Integer>> foo = new Foo<List<Integer>>();
		List<Integer> list = new ArrayList<Integer>();
		list.add(3);
		foo.setT(list);
		String v = JSON.toJSONString(foo);
		System.out.println(v);
		//parse with class
		Foo<?> rst = JSON.parseObject(v, foo.getClass());
		assertTrue(rst.getT() instanceof JSONArray);
		//parse with TypeReference
		rst = JSON.parseObject(v,new TypeReference<Foo<List<Integer>>>(){});
		assertTrue(rst.getT() instanceof JSONArray);//这里没有失败
	}
//	@Test//此用例跟上边那个不能同时跑,要不然上边跑过之后下边就跑不通了
	public void test_FirstWithTypeReference() {
		Foo<List<Integer>> foo = new Foo<List<Integer>>();
		List<Integer> list = new ArrayList<Integer>();
		list.add(3);
		foo.setT(list);
		String v = JSON.toJSONString(foo);
		System.out.println(v);
		//parse with TypeReference
		Foo<?> rst = JSON.parseObject(v,new TypeReference<Foo<List<Integer>>>(){});
		assertFalse(rst.getT() instanceof JSONArray); 
	}
}

      文字描述的话就是:

    泛型类型反序列化调用paseObject的时候,第一次parseObject传Class,后边传TypeReference或者Type就解析不出泛型类型了,泛型对应的类型只能解析成JsonObject

      版本1.2.4及以前,可以解析泛型的版本,应该都有。暂时可以通过含泛型的对象反序列化的时候,只通过传入Type或者TypeReference类型来实现。

分享到:
评论

相关推荐

    FastJson反序列化

    [{"listA":[{"id":"fds","name":"张三"},{"id":"fds","name":"李四"}],"test":"432"}, {"listA":[{"id":"fds","name":"张三"},{"id":"fds","name":"李四"}],...数组里面封装数组的反序列化方法,通过两个bean,进行封装

    FastjsonScan:一个简单的Fastjson反序列化检测burp插件

    FastjsonScan一个简单的Fastjson反序列化检测burp插件我在挖洞的时候看到一些json请求总是想要检测一下有没有Fastjson反序列化问题,本可以直接写一个脚本来跑或者搭配其他被动扫描器来验证,但是我太懒了,先不说...

    SpringBoot Redis配置Fastjson进行序列化和反序列化实现

    主要介绍了SpringBoot Redis配置Fastjson进行序列化和反序列化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    预警事项:Fastjson反序列化远程代码执行漏洞风险预警

    阿里巴巴发布关于Fastjson安全公告,在1.2.80及以下版本中存在反序列化风险。Fastjson是阿里巴巴的开源JSON解析库,可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到...

    springmvc fastjson 反序列化时间格式化方法(推荐)

    下面小编就为大家带来一篇springmvc fastjson 反序列化时间格式化方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    S14-fastjson反序列化1

    JSON.parseObject 和 JSON.parse 这两个方法差不多, JSON.parseObject 的底层调用的还是在序列化时, FastJson

    fastjson反序列化利用

    “本工具仅能在取得足够合法授权的企业安全建设中使用,在使用本工具过程中,您应确保自己所有行为符合当地的法律法规。 如您在使用本工具的过程中存在任何非法行为,您将自行承担所有后果,本工具所有开发者和所有...

    json序列化与反序列化demo

    Gson jackson fastjson LoganSquare 使用demo Gson jackson fastjson LoganSquare 使用demo

    fastjson1.2.69反序列化远程代码执行漏洞介绍.docx

    fastjson1.2.69反序列化远程代码执行漏洞介绍fastjson采用黑白名单的方法来防御反序列化漏洞,导致当黑客不断发掘新的反序列化Gadgets类时,在autoType关闭的情况下仍然可能可以绕过黑白名单防御机制,造成远程命令...

    fastjson1.2.8 反序列化远程代码执行漏洞

    astjson采用黑白名单的方法来防御反序列化漏洞,导致当黑客不断发掘新的反序列化Gadgets类时,在autoType关闭的情况下仍然可能可以绕过黑白名单防御机制,造成远程命令执行漏洞。经研究,该漏洞利用门槛较低,可绕过...

    fastjson和jackson序列化数据的区别

    1、fastjson将字符串反序列化为对象时,只会处理第一层,内部会序列化为JsonObject或者JsonArray,使用二级结构和三级结构时还要再次处理, 优点就是快,特别快。 2、jackson会将深层字符串一起序列化 一言不合就上...

    fastjson、gson、jackson序列化和反序列化所用 json

    fastjson、gson、jackson序列化和反序列化所用json文件

    Fastjson解析案例

    FastJson是阿里巴巴工程师开发的一个json处理工具包,包括“序列化”和“反序列化”两部分。支持Java Bean、集合、Map、日期等等。我这是用fastjson解析json串一个简单的案例。

    Java反序列化实战.pdf

    本议题将从那些经典案例入手,分析攻击方和防御方的对抗过程。会从fastjson与weblogic的两个经典漏洞,带大家傲游反序列化的世界。 反序列化入门 Fastjson Weblogic 反序列化防御

    fastjson-1.2.83.jar下载

    fastjson-1.2.83.jar下载,...4. 支持泛型:fastjson支持泛型类型的解析和序列化。 5. 支持JSONPath:fastjson支持JSONPath表达式查询。 6. 支持注解:fastjson支持多种注解配置JSON序列化和反序列化。 7. 支持携带格式:f

    java操作json-fastjson和jackson,序列化和反序列化,骚操作一个个的

    配套博客 将JSON数据转换成JAVA的实体类

    springboot-fastjson-auto-transform-enum.zip

    springboot 使用fastjson自定义序列化和反序列化

    最新的fastjson工具包2.0.11+JSON序列化与反序列工具包

    支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。侵删 因为在GitHub网站上加载的速度太慢了,先放到这里。

    protostuff fastjson gson 高性能序列化jar包

    protostuff fastjson gson 高性能序列化jar包

    fastjsonHelloWorld

    fastjson 反序列化 漏洞 POC

Global site tag (gtag.js) - Google Analytics