zoukankan      html  css  js  c++  java
  • [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

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

  • 相关阅读:
    国内最火的3款前端开发框架
    Cordova是做什么的
    老师你好。使用cordova生成的hellowold 的安卓5.0版本太高。怎么才可以生成4.4的呢?
    一个类似bootstrap的foundation
    role在标签中的作用是什么?
    如何做到根据不同的进度用不同的颜色显示整个进度条
    wall 和panel有啥区别
    git ignore
    eclipse js 引用跳转
    计划
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/9212113.html
Copyright © 2011-2022 走看看