[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:// ...
随机推荐
- 利用js添加class
来来来,开篇点题. 分页应用.当在当前页时,分页的数字有个框之类的. 重要代码如下 <ul class="pagination"> <li><a hr ...
- UVALive - 7261 Xiongnu's Land
思路: 先二分下界,再二分上届. #include <bits/stdc++.h> using namespace std; #define MP make_pair #define PB ...
- js的Base64编码与解码
js的Base64编码与解码 pc和手机app项目中,经常需要将手机自带的表情图片转换特定的编码格式与后台进行交互. Base64其实是一种简单的置换加密方式,但是BASE64的用处往往并不是为了防止 ...
- Java8函数接口实现回调及Groovy闭包的代码示例
本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场景: 主体流程是不变的,变的只是其中要调用的具体方法. 其特征是: Begi ...
- Java设计模式应用——工厂模式
工厂模式有三种:简单工厂.工厂方法.抽象工厂 一. 抽象工厂 1. 一个可以生产多种产品的工厂: 2. 不改变工厂无法生产新的产品. package com.coshaho.learn.factory ...
- python函数里面,一个*是可变参数的元祖,两个*是可变参数的字典
python的函数中,有时会有类似*args,**keys这样的参数,代表的是可变参数,一个*表示元祖,两个*表示字典,就是说这个函数可以接受任何类型的参数,都不会报错,有些函数为了提高可用性,会加这 ...
- HttpClient配置SSL绕过https证书
https://blog.csdn.net/irokay/article/details/78801307 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的 ...
- Putty Technical Note
转载自:http://libai.math.ncu.edu.tw/bcc16/6/putty/puttyt.html Terminal panel Terminal 面板可調整 PuTTY 對於模擬終 ...
- 09: xmltodict 模块将xml格式转成json格式
1.1 : xmltodict 模块将xml格式转成json格式 <?xml version="1.0"?> <!--#版本号--> <data> ...
- redis.windows.conf 参数说明
1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/ru ...