JSON

JSON工具学习记录--FastJSON

字号+ 作者:H5之家 来源:H5之家 2017-03-05 11:02 我要评论( )

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

JSON工具学习记录--FastJSON

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

一.API入口Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。[code]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> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> 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串[code]//代码构造了几个按钮,按钮1,2,3,4是并列关系,5,6是1的子按钮 @Test public void testJson(){ List<Button> buttons = 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); }看看打印出来的串

[code][ { "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泛型还是继续刚才的例子,把刚才得到的串转回去[code] //泛型使用这种转换方式 List<Button> buttons1 = JSON.parseObject(obj, new TypeReference<List<Button>>(){}); System.out.println(buttons1.toString());

得到结果完全正确

[code][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对象按照官方文档给出的方法就好了

[code]VO vo = JSON.parseObject("...", VO.class);4.操纵一个json对象操纵主要通过下面两个方法

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

2. JSONObject:相当于Map

[code] JSONArray jsonArray = JSON.parseArray(obj); System.out.println(jsonArray.getJSONObject(1).get("name"));//获取json数组中第二个元素的name值5.时间日期处理fastjson处理日期的API很简单,例如:

[code]JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")使用ISO-8601日期格式

[code]JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);全局修改日期格式

[code]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中使用[code]<mvc:annotation-driven/>默认使用jackjson来解析的,按照下面替换下就可以使用fastjson了[code] <!-- 启用默认配置 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <!-- 配置Fastjson支持 --> <bean> <property> <list> <value>text/html;charset=UTF-8</value> <value>application/json</value> </list> </property> <property> <list> <value>WriteMapNullValue</value> <value>QuoteFieldNames</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>

7.备注fastjson不支持直接对文件解析操作,可能后续版本会添加这样的功能,所以对于文件,需要先读取出来保存为string,然后才可以解析,这一点需求比较大的话建议用jackjson来解析,后者对文件操作封装的很不错

json

猜你在找

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • json解析性能比较(gson与jackson) (zz)

    json解析性能比较(gson与jackson) (zz)

    2017-03-05 10:08

  • php输出json、显示json中文的实例

    php输出json、显示json中文的实例

    2017-03-04 16:01

  • JSON、XML解析

    JSON、XML解析

    2017-03-03 15:00

  • 比Gson解析速度快10倍!——Json解析神器Jackson使用介绍

    比Gson解析速度快10倍!——Json解析神器Jackson使用介绍

    2017-03-03 11:01

网友点评