fastjson

json的前世今生

我的未来我决定 提交于 2020-03-26 09:46:22
JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 Java是面向对象的语言,所以我们更多的在项目中是以对象的形式处理业务的,但是在传输的时候我们却要将对象转换为 JSON 格式便于传输,而且 JSON 格式一般能解析为大多数的对象格式,而不在乎编程语言。 在工作中, 我们不可避免的要使用json字符串, json已经成为我们resultful接口最常使用的数据格式, 相信大家也都不陌生了, 工作中或多或少也是用过的.今天我就是要来说说json数据处理时, 我们使用到的一些坑, 避免自己或者大家以后也落入到这线陷阱中, 特总结出来, 分享给大家, 希望对大家有帮助. 好吧, 我们进入正题, 大家在处理json字符串的时候, 最常使用的包和方法时什么嗯? 1. fastjson 1. 什么是fastjson 阿里官方给的定义是, fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 2. fastjson的优点

SpringBoot(九):fastjson、异常处理

僤鯓⒐⒋嵵緔 提交于 2020-03-24 19:33:09
3 月,跳不动了?>>> 1、fastjson pom.xml 加入jar <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.31</version> </dependency> 配置 fastjson:继承WebMvcConfigurerAdapter覆写configureMessageConverters方法 @Configuration public class SpringMVCConfig extends WebMvcConfigurerAdapter{ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { FastJsonHttpMessageConverter4 fastJsonConverter = new FastJsonHttpMessageConverter4(); converters.add(fastJsonConverter); } } 使用fastjson中注解 @JSONField @JSONField(format = "yyyy-MM-dd HH:mm:ss") private Date

Fastjson使用和常用注解

血红的双手。 提交于 2020-03-24 19:24:55
3 月,跳不动了?>>> fastjson的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>版本号</version> </dependency> 编写FastJsonUtils工具类: https://my.oschina.net/lion1220/blog/3151033 FastJson序列化方式 SerializeFilter定制序列化 ParseProcess定制反序列化 @JSONField 定制序列化-----配置在字段或者getter/setter方法上,搭配JSON.toJSONString(实体类)方法使用,将实体类转换成json字符串。搭配JSON.parseObject(字符串,实体类.class)方法使用,将字符串转换成实体类。 @JSONType 定制序列化-----配置在类上 包含泛型类不能转换的问题,需要用到 TypeReference ResponseEntity<User> response = JSON.parseObject(result, new TypeReference<ResponseEntity<User>>(){}); 来源: oschina 链接: https://my.oschina.net

1-SOA分布式架构搭建(dubbo)

余生长醉 提交于 2020-03-23 00:08:00
3 月,跳不动了?>>> 1-SOA分布式架构搭建(dubbo) 一、分布式架构的演进 1.单一应用架构 优点:适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。 缺点: 1.性能扩展比较难  2.协同开发问题  3.不利于升级维护 2.垂直应用架构 优点:通过切分业务来实现单个模块单独独立部署,降低了维护和部署的难度,团队各司其职比较容易,性能扩展也更方便,更有针对性。 缺点:公用模块无法重复利用,开发性能浪费 3.分布式应用架构 优点:将各个应用通过分层独立出来,可以利用rpc实现web与service、service与service的互相调用,提高了代码的复用性。 缺点:每个调用的模块都要存储一份完整的被调用模块的位置和状态,一旦位置和状态发生变化,就要更新所有涉及的配置 4.面向服务的分布式架构   **架构概述:**随着架构不断增大,服务节点也越来越多,服务之间的调用和依赖关系也越来越负责,需要一个统一的中心来调度、路由、管理所有的服务基于这个中心构建的这个新型架构就是目前主流的SOA分布式架构。 二、分布式工程的模块搭建 1、分布式模块文件图   由于查询web应用需要调用爬虫service接口,那么必须在订单的工程中也包含一份service接口。   如果拷贝一个接口道查询工程中,那么如果以后有更多的模块都调用这个接口呢?每个接口都拷贝一份嘛?  

fastjson 判断是否是JSONObject

淺唱寂寞╮ 提交于 2020-03-22 15:16:09
3 月,跳不动了?>>> 1.如果一直是json对象,则直接使用isValidObject判断;如果需要再摘一层,则使用String strData = object.getString("data"), 获取需要判断的对象,在使用isValidObject判断即可。 来源: oschina 链接: https://my.oschina.net/u/4038596/blog/3208251

FastJson的简单实用

↘锁芯ラ 提交于 2020-03-21 13:38:40
一、FastJson的理解 在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。 常用一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。 FastJson不依赖于第三方包, 直接可以运行在Java JDK1.5之上,FastJson完全支持 http://json.org 的标准,支持各种JDK类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等 还支持循环引用。 FastJson项目是开源的:Fastjson代码托管在github.org上,项目地址是 https://github.com/AlibabaTech/fastjson 一个JSON库涉及的最基本功能就是序列化和反序列化。Fastjson支持java bean的直接序列化。使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。 FastJson是阿里巴巴工程师设计的 二、FastJson的基本使用 package cn.monster.entity; import java.util.ArrayList; import java.util.Date;

Springboot引入fastjson

孤人 提交于 2020-03-21 09:59:58
引入fastjson依赖库    <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency>   官方文档说的1.2.10以后,会有两个方法支持HttpMessageconvert,一个是FastJsonHttpMessageConverter,支持4.2以下的版本,一个是FastJsonHttpMessageConverter4支持4.2以上的版本   方法一:启动类继承extends WebMvcConfigurerAdapter,覆盖方法configureMessageConverters     @SpringBootApplication public class ApiCoreApp extends WebMvcConfigurerAdapter {        @Override       public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {          super.configureMessageConverters(converters);        

Android开发之如何使用FastJson

非 Y 不嫁゛ 提交于 2020-03-18 11:31:10
在 Android 开发中,我们 Android 客户端如果要和 服务器 端交互,一般都会采用 json 数据格式进行交互,FastJson是阿里巴巴工程师开发的一个Json处理工具包,包括“序列化”和“反序列化”两部分,Fastjson是一个Java语言编写的高性能功能完善的JSON库。 一个JSON库涉及的最基本功能就是序列化和反序列化。 Fast json 支持 java bean的直接序列化。你可以使用 c om.alibaba.fast json .JSON这个类进行序列化和反序列化。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库。 FastJson速度最快,fastjson具有极快的性能,超越任其他的Java Json parser。 FastJson功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖。 Fast json API入口类是 c om.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。 使用Fastjson首先在官网下载,然后应用到自己的项目中,下面链接是开源社区的链接: http://www.oschina.net/p/fastjson 1.首先概述一下Fastjson中的经常调用的方法 : 1 public static

Fastjson反序列化漏洞利用分析

点点圈 提交于 2020-03-12 11:16:45
Fastjson反序列化漏洞利用分析 ​ 背景 在推动Fastjson组件升级的过程中遇到一些问题,为帮助业务同学理解漏洞危害,下文将从整体上对其漏洞原理及利用方式做归纳总结,主要是一些概述性和原理上的东西。 漏洞原理 多个版本的Fastjson组件在反序列化不可信数据时会导致代码执行。究其原因,首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会造成一些严重的安全问题。 那么不开启autotype功能就安全了吗? 不是的,在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过,绕过细节可参考(https://www.anquanke.com/post/id/181874),代码验证逻辑的问题,不再赘述。 利用方式 那么Fastjson反序列化不可信数据时是如何导致代码执行的呢?这就是漏洞原理一节中所说的可被恶意利用的逻辑,目前公开的

Java的JSON文件解析

扶醉桌前 提交于 2020-03-10 20:43:56
1. JSON格式概述 JSON  JavaScript  JavaScript Object Notation  (JavaScript Object Notation,JavaScript对象表示法,读作/ˈdʒeɪsən/)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。   { { "firstName" : "John" , "lastName" : "Smith" , "sex" : "male" , "age" : 25 , "married" : false , "address" : { "streetAddress" : "21 2nd Street" , "city" : "New York" , "state" : "NY" , "postalCode" : "10021" } , "phoneNumber" : [ { "type" : "home" , "number" : "212 555-1234" } , { "type" : "fax" , "number" : "646 555-4567" } ] } 2. 数据格式 2.1