[Java学习] JSON工具学习记录--FastJSON
最近做项目,总是与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的更多相关文章
- Java中json工具对比分析
Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.c ...
- java生成Json工具之JsonSimple的使用
json-simple是由是Google开发的Java JSON解析框架,基于Apache协议.目前版本为1.1 项目主页:https://code.google.com/p/json-simple/ ...
- java反编译工具使用记录
最近试了四个反编译工具,总结一下. 先说结论,最有效果的是Procyon Decompile.使用方法:https://blog.csdn.net/u010762551/article/details ...
- 强大的json工具:fastJson
fastJson FastJSON是一个很好的java开源json工具类库,相比其他同类的json类库,它的速度的确是fast,最快!但是文档做得不好,在应用前不得不亲测一些功能. 实际上其他 ...
- Java学习笔记 -- Java定时调度工具Timer类
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
- Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)
Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...
- Java 需要记得、了解的关键词 (Java 学习中的小记录)
Java 需要记得.了解的关键词 (Java 学习中的小记录) 作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用
- java 编写小工具 尝试 学习(七)
1.在java 编写小工具 尝试 学习(六)里学会了,控件 的随意摆放, 以及大小(x,y,width,height),又根据前面学习的按钮 被点击 的事件监控 的方法 ,点击 按钮 在显示区域显示“ ...
- JSON工具类库: alibaba/fastjson 使用记录
JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http:// ...
随机推荐
- zw版【转发·台湾nvp系列Delphi例程】HALCON SmallestRectangle2
zw版[转发·台湾nvp系列Delphi例程]HALCON SmallestRectangle2 procedure TForm1.Button1Click(Sender: TObject);var ...
- 持续集成之三:Maven私服Nexus使用
环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 apache-tomcat-7.0.90 mysql-5.7.23 ...
- Linux服务器配置---tftpserver
安装tftp-server 1.安装tftp-server [root@localhost weijie]# yum install -y tftp-server Loaded plugins: fa ...
- 安全测试工具之Burpsuite
端口即服务,每一个服务对应一个或多个端口.端口扫描即通过一些方法检测到一台主机的一段特定端口是否提供相应的服务.利用这些扫描结果,正常用户可以访问系统所提供的服务,而黑客却可以利用这些服务中的漏洞对系 ...
- (二) MySQL常用命令及语法规范
- Centos7.5 安装Netdata
切为root, yum install zlib-devel gcc make git autoconf autogen guile-devel automake pkgconfig -y yum i ...
- django 加载静态文件(图片,js,css)
昨天写过一个项目通过django上传展示图片,但是今天写项目的时候发现出现了问题,静态文件加载不出来了,尴尬的一笔~ 记录一下静态文件的使用方法,基础~ ----------------------- ...
- C++设计模式 之 “组件协作”模式:Template Method、Strategy、Observer
“组件协作”模式: #现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式. #典型模式: Templ ...
- Cortex-M3基础
(一)寄存器 1 寄存器组 R0-R12: 通用寄存器 ------------------------------------------------------------------- ...
- Python3基础 父,子类普通方法重名 子类方法覆盖父类方法
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...