当前位置:   article > 正文

gson解析json maven_json使用过程踩过的一些坑

gson不兼容@jsonproperty?

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的优点

  • 速度快fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
  • 使用广泛fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
  • 测试完备fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
  • 使用简单fastjson的 API 十分简洁。
  • 功能完备支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。

3. 获取fastjson

你可以通过如下地方下载fastjson:

  • maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/
  • Sourceforge.net : https://sourceforge.net/projects/fastjson/files/
  • 在maven项目的pom文件中直接配置fastjson依赖

fastjson最新版本都会发布到maven中央仓库,你可以直接依赖。

dependency>    com.alibaba    fastjson    x.x.x

其中x.x.x是版本号,根据需要使用特定版本,建议使用最新版本。

fastjson漏洞

漏洞描述

常用JSON组件FastJson存在远程代码执行漏洞,攻击者可通过精心构建的json报文对目标服务器执行任意命令,从而获得服务器权限。此次爆发的漏洞为以往漏洞中autoType的绕过。

影响范围

FastJson < 1.2.48

漏洞描述

利用该0day漏洞,恶意攻击者可以构造攻击请求绕过FastJSON的黑名单策略。例如,攻击者通过精心构造的请求,远程让服务端执行指定命令(以下示例中成功运行计算器程序)。

ab939a9ebe57e85363e02d3fb61e0fa7.png

4. Fastjson主要的API

Fastjson入口类是 com.alibaba.fastjson.JSON,主要的 API 是 JSON.toJSONString 和 parseObject。

package com.alibaba.fastjson;public abstract class JSON {     // Java对象转换为JSON字符串     public static final String toJSONString(Object object);     //JSON字符串转换为Java对象     public static final  T parseObject(String text, Class clazz, Feature... features);}

序列化:

String jsonString = JSON.toJSONString(obj);

反序列化

VO vo = JSON.parseObject("...", VO.class);

5. Fastjson的性能

fastjson是目前java语言中最快的json库,比自称最快的jackson速度还要快,第三方独立测试结果看这里:https://github.com/eishay/jvm-serializers/wiki。

自行做性能测试时,需关闭循

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/834149
推荐阅读
相关标签
  

闽ICP备14008679号