最近做项目,总是与json打交道,在用了即可json工具后,个人认为fastJson最好用,很方便,API也清晰可见,所以记录下使用方法,给需要的人提供帮助.(部分摘抄自网络)

  一.API入口

  Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

  public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

  对于上面实例解释下:

  1. SerializeWriter:相当于StringBuffer

  2. JSONArray:相当于List

  3. JSONObject:相当于Map

  二.使用实例1.java对象转json串//代码构造了几个按钮,按钮1,2,3,4是并列关系,5,6是1的子按钮 @test public void testJson(){ Listbuttons = new ArrayList<>(); Button button1 = new Button(); button1.setName("button1"); button1.setType("click"); Button button2 = new Button(); button2.setName("button2"); button2.setType("click"); Button button3 = new Button(); button3.setName("button3"); button3.setType("click"); Button button4 = new Button(); button4.setName("button4"); button4.setType("click"); Button button5 = new Button(); button5.setName("button5"); button5.setType("click"); Button button6 = new Button(); button6.setName("button6"); button6.setType("click"); button1.setSub_button(new Button[]{button5, button6});//设置5,6是1的子按钮 buttons.add(button1); buttons.add(button2); buttons.add(button3); buttons.add(button4); String obj = JSON.toJSONString(buttons); System.out.println(obj); }

  看看打印出来的串

  [ { "name": "button1", "sub_button": [ { "name": "button5", "type": "click" }, { "name": "button6", "type": "click" } ], "type": "click" }, { "name": "button2", "type": "click" }, { "name": "button3", "type": "click" }, { "name": "button4", "type": "click" }]

  完全符合预期结果

  2.json串转java泛型

  还是继续刚才的例子,把刚才得到的串转回去

  //泛型使用这种转换方式 List

  buttons1 = JSON.parseObject(obj, new TypeReference>(){}); System.out.println(buttons1.toString());

  得到结果完全正确

  [namebutton1--typeclick--sub_button[Lcom.haikong.model.menu.Button;@27d5a580, namebutton2--typeclick--sub_buttonnull,namebutton3--typeclick--sub_buttonnull, namebutton4--typeclick--sub_buttonnull

  3.json转java对象

  按照官方文档给出的方法就好了

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

  4.操纵一个json对象

  操纵主要通过下面两个方法

  1. JSONArray:相当于List//针对多个对象时转换

  2. JSONObject:相当于Map

  JSONArray jsonArray = JSON.parseArray(obj); System.out.println(jsonArray.getJSONObject(1).get("name"));//获取json数组中第二个元素的name值

  5.时间日期处理

  fastjson处理日期的API很简单,例如:

  JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")

  使用ISO-8601日期格式

  JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);

  全局修改日期格式

  JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);

  反序列化能够自动识别如下日期格式:

  ISO-8601日期格式

  yyyy-MM-dd

  yyyy-MM-dd HH:mm:ss

  yyyy-MM-dd HH:mm:ss.SSS

  毫秒数字

  毫秒数字字符串

  .NET JSON日期格式

  new Date(198293238)

  更多使用参考官方文档即可

  6.在springMVC中使用默认使用jackjson来解析的,按照下面替换下就可以使用fastjson了

  1

  2

  text/html;charset=UTF-8 application/json WriteMapNullValue QuoteFieldNames

  spring4之后的整合变更了方式:

  application/json WriteNullListAsEmpty

  (编辑:雷林鹏 来源:网络)

[Java学习] JSON工具学习记录--FastJSON的更多相关文章

  1. Java中json工具对比分析

    Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.c ...

  2. java生成Json工具之JsonSimple的使用

    json-simple是由是Google开发的Java JSON解析框架,基于Apache协议.目前版本为1.1 项目主页:https://code.google.com/p/json-simple/ ...

  3. java反编译工具使用记录

    最近试了四个反编译工具,总结一下. 先说结论,最有效果的是Procyon Decompile.使用方法:https://blog.csdn.net/u010762551/article/details ...

  4. 强大的json工具:fastJson

    fastJson   FastJSON是一个很好的java开源json工具类库,相比其他同类的json类库,它的速度的确是fast,最快!但是文档做得不好,在应用前不得不亲测一些功能.   实际上其他 ...

  5. Java学习笔记 -- Java定时调度工具Timer类

    1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...

  6. Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)

    Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...

  7. Java 需要记得、了解的关键词 (Java 学习中的小记录)

    Java 需要记得.了解的关键词 (Java 学习中的小记录)     作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用

  8. java 编写小工具 尝试 学习(七)

    1.在java 编写小工具 尝试 学习(六)里学会了,控件 的随意摆放, 以及大小(x,y,width,height),又根据前面学习的按钮 被点击 的事件监控 的方法 ,点击 按钮 在显示区域显示“ ...

  9. JSON工具类库: alibaba/fastjson 使用记录

    JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http:// ...

随机推荐

  1. mac远程连接windows

    第一步:在Mac上安装Remote Desktop Connection 进入Microsoft Remote Desktop Connection下载安装包. 下载完成之后,双击安装包进行安装. 第 ...

  2. yii2之增加省市字段

    第一步,利用数据库迁移文件改表 修改一下迁移文件: https://bitbucket.org/ysxy/zijiu.git

  3. AO中的空间关系

    名词解释: Boundary(边界): 只有线和面才有边界.面的边界是指组成面的框架线:线的边界是指线的二个端点(即起点和终点,不包括中间部分的节点):点没有边界. Interior(内部): 除去边 ...

  4. mysql创建外链失败1005错误解决方法

    mysql创建外链失败1005错误解决方法 错误号:1005错误信息:Can't create table 'webDB.#sql-397_61df' (errno: 150)解决方法 错误原因有四: ...

  5. python3.4学习笔记(二) 类型判断,异常处理,终止程序

    python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...

  6. ACM题目————Sunscreen

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  7. http协议/获得请求/中文参数处理/访问数据库

    # 1. http协议(了解)## (1)什么是http协议?一种网络应用层协议,规定了浏览器与web服务器之间如何通信以及相应的的数据包的结构.注:tcp/ip协议:保证数据可靠的传递.(UDP不可 ...

  8. Python Web学习笔记之进程与线程

    要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都有一个自己的地址空 ...

  9. Antlr4 入门

    一.ANTRL 是什么 ANTLR 是用JAVA写的语言识别工具,它用来声明语言的语法,简称为“元语言”(meta-language). ANTLR 语法识别一般分为二个阶段: 1.词法分析阶段 (l ...

  10. Nginx 灰度实现方式(支持纯灰度,纯生产,50度灰及更多比例配置)

    前言 Nginx相关技术短信本篇幅不做详细介绍,所以学习本文之前要对Nginx有相关的了解. 生产环境即线上环境,在经历开发.测试再到上线,不可避免的会更新生产环境,但谁又能保证测试过的代码到线上运行 ...