在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。
我在网上看了一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。

经过测试,个人觉得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这个类进行序列化和反序列化。

一。简单的序列化

pubic class UserInfo implements Serializable{private String name;private int age;public void setName(String name){this.name=name;}public String getName(){return name;}public void setAge(int age){this.age=age;}public int getAge(){return age;}
} public class TestOne{public static void main(String[] args){UserInfo info=new UserInfo();info.setName("zhangsan");info.setAge(24);//将对象转换为JSON字符串String str_json=JSON.toJSONString(info);System.out.println("JSON="+str_json);}}

二.复杂的数据类型

public static void test2() {HashMap<String, Object> map = new HashMap<String, Object>();map.put("username", "zhangsan");map.put("age", 24);map.put("sex", "男");//map集合HashMap<String, Object> temp = new HashMap<String, Object>();temp.put("name", "xiaohong");temp.put("age", "23");map.put("girlInfo", temp);//list集合List<String> list = new ArrayList<String>();list.add("爬山");list.add("骑车");list.add("旅游");map.put("hobby", list);/*JSON序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串,[eg:String jsonString = JSON.toJSONString(map,   SerializerFeature.UseSingleQuotes);]*fastjson序列化时可以选择的SerializerFeature有十几个属性,你可以按照自己的需要去选择使用。 */String jsonString = JSON.toJSONString(map);System.out.println("JSON=" + jsonString);}

三.反序列化

public void test3(){String json="{\"name\":\"chenggang\",\"age\":24}";//反序列化UserInfo userInfo=JSON.parseObject(json,UserInfo.class);System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());}
/**泛型的反序列化*/
public static void test4(){String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}";Map<String, UserInfoBean> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfoBean>>(){});System.out.println(map.get("user"));}

//同理, json字符串中可以嵌套各种数据类型。

四.日期格式化

public void test5(){Date date=new Date();  //输出毫秒值System.out.println(JSON.toJSONString(date));//默认格式为yyyy-MM-dd HH:mm:ss  System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));//根据自定义格式输出日期 System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));}

这里举了几个简单的例子, 其它特殊要求可以根据FastJson的方法的说明,进行选择。

FastJson简单使用相关推荐

  1. FastJson 简单使用

    对象.List转Json User user = new User(); /*JSON 序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串, [eg:String ...

  2. FastJson简单应用

    把对象或者数组转化成json字符串: public static String createJsonString(Object value) { String alibabaJson = JSON.t ...

  3. android fastjson漏洞_亲手带你 Debug Fastjson 的安全漏洞

    简介 Java处理JSON数据有三个比较流行的类库,gson(google维护).jackson.以及今天的主角fastjson,fastjson是阿里巴巴一个开源的json相关的java libra ...

  4. Struts2.0第三章(文件上传、ajax开发、json、Fastjson、Jackson、注解开发)

    Struts2.0文件上传: 浏览器端注意事项: 1.表单提交方式method = post: 2.表单中必须有一个<input type="file" name = &qu ...

  5. Fastjson反序列化

    Fastjson反序列化 0x00 前言 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSO ...

  6. android retrofit入门,Android开发 retrofit入门讲解

    前言 retrofit基于okhttp封装的网络请求框架,网络请求的工作本质上是 OkHttp 完成,而 retrofit 仅负责网络请求接口的封装.如果你不了解OKhttp建议你还是先了解它在来学习 ...

  7. 企业spark案例 —— 出租车轨迹分析(2)

    任务描述 本关任务:使用SparkSQL完成数据分析. 相关知识 为了完成本关任务,你需要掌握:如何使用SparkSQL进行数据分析 FastJson 简述 JSON 协议使用方便,越来越流行,JSO ...

  8. Google Gson

    JackSon简单用法        FastJson简单用法 一.Gson介绍 1.什么是Gson Gson 是 Google 开发的Java API,是一个简单基于Java的开源库,可以相互转换J ...

  9. Java_OAexp工具设计及实现 | Thelostworld_OA

    本文主要介绍基于JavaFX图形化界面开发的快速OA类利用工具.笔者收集和整理了目前工具的OA类验证及其利用的方式和方法,整合成一个方便快捷图形化的快速利用工具. 想要写这个工具的原因,主要是日常工作 ...

最新文章

  1. 2021年大数据Hive(八):Hive自定义函数
  2. C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
  3. Swift:在Safari中打开App
  4. linux文件显示程序,Linux下文件显示命令简介
  5. 自动化测试工具selenium python_自动化测试工具之Selenium(一)-----Selenium的介绍以及安装...
  6. Linux fork()函数底层CopyOnWrite写时复制实现原理剖析
  7. Java 23种设计模式案例:原则及分类
  8. Python3解析XML文件(xml.etree.ElementTree)——以简单网络爬虫为例
  9. FPGA存储器DDR5简介
  10. 智慧讲台接收画板协议规划
  11. JavaScript的高大强
  12. 程序员眼中的统计学(3)】概率计算:把握机会
  13. Webstorm中文乱码的问题
  14. php 开启 ziparchive,php ZipArchive类使用实例详解
  15. 环境影响评价期末复习
  16. 小众软件android,七款优秀的小众软件,每款都是装逼神器!
  17. python写完后打不开门_感觉自己python已经入门了,为什么还是没法用Python写好程序?...
  18. 欧文分校的计算机科学博士,2020年加州大学欧文分校博士含金量
  19. python毫秒级别抢购_Python 实现毫秒级淘宝抢购脚本
  20. 基础(一):SCSI硬盘与IDE硬盘有什么区别

热门文章

  1. 新版新概念英语1-4册(英音+美音)MP3打包下载
  2. 微信小程序蓝牙对接热敏打印机
  3. 计算机跨应用心理,2017跨专业应用心理学考研难不难
  4. 阿里云视频直播产品使用流程
  5. 手风琴图片跳转(html、cs、js实现)
  6. Excel 数据透视表(图)的使用(备忘)
  7. Git版本管理工具使用详细介绍
  8. python在物理中怎么用_大学物理中Python的应用
  9. 可以连接手机,实现更多功能,这款智能头盔你用过吗?
  10. 成语答题小程序手机版后台开发