fastjson

fastjson处理接口时的一个问题

痴心易碎 提交于 2019-12-03 08:42:47
今天在使用fastjson序列化java.nio.file.Path时遇到了问题。fastjson以JavaBean的方式对Path进行处理,遇到了循环引用的问题。自定义java.io.file.Path.class的Serializer后,没有循环引用,但是并没有按照预想的动作进行。跟踪代码发现在取Serializer时没有正确的取到自定义的Serializer,原因是运行时的类是sun.nio.fs.UnixPath,在Map中匹配不上。 归结到一般场景:工厂方法提供接口的实现,在外面定义的接口的自定义Serializer无法匹配这个实现类,导致出现无法使用自定义的Serializer。 已经向温少提交了这个问题,不知道有什么好的解决方法。或者有什么Feature已经可以处理,而我没有发现??? 来源: oschina 链接: https://my.oschina.net/u/116768/blog/37064

关于SpringMVC返回数据带斜杠字符串问题之解决方案

匿名 (未验证) 提交于 2019-12-03 00:43:02
常用SpringMVC的基本都知道,@RestController和@ResponseBody加上了都会返回json数据。它们的区别主要是注解方面,一个是类级别的一个是方法级别。 之前我们比较喜欢使用@ResponseBody,后来觉得重复性太多了,特别是使用swagger以后,一个方法上面关注解就上了4到5层,为了减少这些繁杂的过程,我们就采取简洁策略,因为都是基于前后端分离开发,前端展示也不打算使用诸如jsp、freemarke、volocity等模板语言。直接上手html,当然主要是以ajax的方式进行交互。 先列举这么几个情况?通常情况下,类上面有对应的RestController注解或者是你的类上是@Controller注解,并在每个方法上面加上@ResponseBody。正常是应该返回JSON数据的。通过POSTMAN测试或者Jmeter。 关于@RestController和@ResponseBody源码解析可以参考我的这篇文章: 前后端交互之封装Ajax+SpringMVC源码分析 当然有的时候没有返回的话,根据你使用而定比如使用FastJSON却没有返回对应的JSON数据,可通过在SpringMVC配置文件加上如下内容解决: <!-- FastJson注入 --> <mvc:annotation-driven> <mvc:message-converters

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对JSONObject中的指定字段重新赋值-已上传

匿名 (未验证) 提交于 2019-12-03 00:38:01
JSONObject对同一个key重新put时,新值就会取代旧值,没有set之类的方法 构建json string时,所有的引号都要转义 package xx; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; // 对JSONObject中的指定字段重新赋值 public class testJsonReplace { public static void main(String[] args) { String query_jsonstr = "{\"timezone\":\"GMT+0\",\"action\":\"front_BRAND\",\"format\":\"true\",\"lan\":\"en_us\",\"column\":[\"day\",\"impressions\",\"clicks\",\"ctr\",\"brand_estimated_ecpm\",\"pay_out\"],\"dimension\":[\"day\"],\"filter\":{\"posid\":{\"op\":\"in\",\"value\":\"2454105\"}},\"start\":1528761600000,\"end\":1529452800000}";

springBoot解析json格式的数据

匿名 (未验证) 提交于 2019-12-03 00:38:01
首先导入核心包fastJson和commons-io包 <!-- fastJson --> <dependency> <groupId> com.alibaba </groupId> <artifactId> fastjson </artifactId> <version> 1.2.47 </version> </dependency> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId> commons-io </groupId> <artifactId> commons-io </artifactId> <version> 2.4 </version> </dependency> 我的json数据是放在resources下 核心代码 package com.shengxun.service.impl ; import com.alibaba.fastjson.JSONArray ; import com.alibaba.fastjson.JSONObject ; import com.shengxun.domian.CmpNo ; import org.apache.commons.io.FileUtils ; import org

Java之两个不同对象的List copy相同的属性

大城市里の小女人 提交于 2019-12-03 00:27:36
业务中遇到,使用Mybatis generator生成的Example和Mapper从数据库查询结果,该结果使用的实体类是和数据库字段一一对应的,但是不想把该实体类的所有属性都返回给前端,于是新建一个实体类,其中只有前端需要的属性,然后想把List<UserA>中的对象全部拷贝到List<UserB>中,其中UserA属性多,UserB属性少,字段名是一样的。 方法1:使用Spring的BeanUtils.copyProperties()或者PropertyUtils.copyProperties() 将List1循环,将UserA中需要的属性Set到UserB中。这个方法略麻烦,因为还需要循环,并且创建新对象。 方法2:借助FastJson的Json和对象转换的功能 具体实现就是,将对象(或者List)转换为json,然后再将json信息转换为指定的对象(或者指定对象的List),具体代码贴在下面: /** * 从List<A> copy到List<B> * * @param list * @param clazz * @param <T> * @return */ public static <T> List<T> copy(List<?> list, Class<T> clazz) { String oldOb = JSON.toJSONString(list);

fastjson List转JSONArray以及JSONArray转List

匿名 (未验证) 提交于 2019-12-03 00:22:01
List<T> list = new ArrayList<T>(); JSONArray array= JSONArray.parseArray(JSON.toJSONString(list)); JSONArray array = new JSONArray(); List<EventColAttr> list = JSONObject.parseArray(array.toJSONString(), EventColAttr.class); String str = ""; List<T> list = JSONObject.parseArray(str,T.class); 文章来源: fastjson List转JSONArray以及JSONArray转List

json -- fastjson如何序列化@Transient的字段

匿名 (未验证) 提交于 2019-12-02 23:55:01
今天把fastjson包改成了1.2.58,发现@Transient标注的字段序列化后不见了,但是项目需要把@Transient字段序列化,处理方法: 原文: https://github.com/alibaba/fastjson/issues/86#issuecomment-57904327 修改全局缺省配置 JSON . DEFAULT_GENERATE_FEATURE = SerializerFeature . config ( JSON . DEFAULT_GENERATE_FEATURE , SerializerFeature . SkipTransientField , false ); 我的修改方法是在项目封装的JSONUtil类里面通过 static { JSON . DEFAULT_GENERATE_FEATURE = SerializerFeature . config ( JSON . DEFAULT_GENERATE_FEATURE , SerializerFeature . SkipTransientField , false ); } 进行配置。 来源:博客园 作者: liDB 链接:https://www.cnblogs.com/yarightok/p/11425188.html

fastjson&lt;1.2.47 RCE 漏洞复现

匿名 (未验证) 提交于 2019-12-02 23:49:02
这两天爆出了 fastjson 的老洞,复现简单记录一下。 首先使用 spark 搭建一个简易的利用 fastjson 解析 json 的 http server。 package cn.hacktech.fastjsonserver; import com.alibaba.fastjson.JSON; import static spark.Spark.*; public class Main { public static void main(String[] args) { get("/hello", (req, res) -> "spark server start success"); post("/test", (req, res) -> { String payload = req.body(); JSON.parse(payload); return "json payload:" + payload; }); } } 编译出来后,启动这个 jar,在 /test 这个 post 点即可 post json payload。 然后这里分两类: 如果只是想检测漏洞是否存在,可以使用 dnslog 去检测 利用的话,需要自己起一个恶意的 ldap 或者 rmi 服务 目前测试出来的是 rmi 有版本限制(据说是可能是 8u113 ),打不出来;ldap 是可以的。

FastJson常用方法

匿名 (未验证) 提交于 2019-12-02 23:43:01
FastJSON List ת JSONArray List<T> list = new ArrayList<T>(); JSONArray array= JSONArray.parseArray(JSON.toJSONString(list)); # null值也返回 String jsonStr = JSON.toJSONString(slipTaskList, SerializerFeature.WriteMapNullValue); FastJSON JSONArrayת List JSONArray array = new JSONArray(); List<EventColAttr> list = JSONObject.parseArray(array.toJSONString(), EventColAttr.class); 文章来源: https://blog.csdn.net/baidu_32872293/article/details/92658677