zoukankan      html  css  js  c++  java
  • 第六篇:fastJson常用方法总结

     1、了解json

     json就是一串字符串 只不过元素会使用特定的符号标注。
     {} 双括号表示对象
     [] 中括号表示数组
     "" 双引号内是属性或值
     : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
     所以 {"name": "Kobe"} 可以理解为是一个包含name为Kobe的对象
     而[{"name": "Michael"},{"name": "Kobe"}]就表示包含两个对象的数组

    当前java的第三方json库非常多,google的gson,alibaba的fastJson,jackson,微软的也有一个,还有java自己的json ,查了下效率和受欢迎度,以后就选择马云的fastJson作为常用的json解析和构建工具了

    2、了解fastJson
    (1)功能强大,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型 
    (2) 无依赖,不需要例外额外的jar,能够直接跑在JDK上
    (3)支持注解等等这些高级的特性还没接触到,不谈
    (4)几个对比助于理解
     SerializeWriter:相当于StringBuffer
         JSONArray:相当于List<Object>
         JSONObject:相当于Map<String, Object>
    (5)API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成

    1 public static final Object parse(String text);                                     // 把JSON文本转换成JSONObject或者JSONArray 
    2 public static final JSONObject parseObject(String text);                  // 把JSON文本转换成JSONObject 
    3 public static final JSONArray parseArray(String text);                     // 把JSON文本转换成JSONArray 
    4 public static final <T> T parseObject(String text, Class<T> clazz);  // 把JSON文本转换成JavaBean
    5 public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本转换成JavaBean集合 

    6 public static final String toJSONString(Object object);                    // 将JavaBean序列化为JSON文本 
    7 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本  

    8 public static final Object toJson(Obiect javaObject);         //将JavaBean转换为JSONObject或者JSONArray  
     
    3、解析
      首先要明白一个规律,无论传过来的jsonStr怎么组装,怎么嵌套,都逃不了以下三种,形如[]的JSONArray,形如{}的JSONObject以及“:”连接的键值对,因此解析的第一步要先判断是用parseObject还是parseArray方法(前5种),特别提醒如果直接用方法1,一般要强制转换。前提是你知道传过来的json字符串的格式。第一步解析完之后需要用到下面两类方法来调用:
     public JSONObject getJSONObject(int index);   //读取对象
     public JSONObject getJSONObject(String key);   //读取对象
     public JSONArray getJSONArray (int index);   //读取数组
     public JSONArray getJSONArray (String key);   //读取数组 
    有时候需要最终取出数据,那么解析到最后一层形如{a:b,c:d,e:f} 的时候就可以直接用
    JSONObject里的各种取数据的方法,比如随便说几个,getLongValue(),getString(),getInteger(),参数均为key
    例:如下json字符串解析str


        {
              "id": 1
              "type": "cycle",
             "attribute": {
                 "center": "(10.4, 123.345)",
                 "radius": 67.4
                }
        },
        {
            "id": 2,
            "type": "polygon",
            "attribute": [
                {
                 "vertex": "(10.4,133.345)"
                },
                 {
                "vertex": "(10.4,143.345)"
                }
            ]
        }

    现在我要得到最后的 "vertex": "(10.4,143.345)"这条数据
    首先,最外层是数组
     JSONArray ja = JSON.parseArray(str);
    ja这个json数组内部是两个对象,取出第二个(id为2的那个对象)
    JSONObject jo = ja.getJSONObject(1) ;
    jo这个json对象中有3个键值对,取出第三个,key为attribute的那个,取出后结果为数组,so
    JSONArray ja1 = jo.getJSONObject("attribute");
    ja1这个json数组内部有两个对象,取出第二个
    JSONObject jo1 = ja1.getJSONObject(1) ;
    jo1就是 {"vertex": "(10.4,143.345)"}这个对象,现在里面就1个键值对了,取出来就是了
    String s = jo1.getString("vertex");
    System.out.println(s);//结果为(10.4,143.345)

            这个是最基本的取值,其他的还有遍历,用javaBean的暂时没碰到,暂时也不去总结,至于构建,一般都是从list,map转化,或者是在前台js中,比如我的上一篇的ztree打包的数据,我就用js的 JSON.stringify(dataList)来打包成json格式的传到后台的

    接下来还有java 中list,map,和json之间的转换 

  • 相关阅读:
    python中函数部分简介与定义(二)
    python中函数部分简介与定义(一)
    db2 不允许在自动存储器表空间上执行 SET TABLESPACE CONTAINERS 命令。的解决办法
    JQuery中$.ajax()方法参数详解
    jquery post 同步异步总结
    js设置height随窗口大小改变
    关于POI的系统整理
    POI 实现导出excel表
    转载>>JQuery EasyUI datagrid 合并表头处理
    iframe标签用法详解(属性、透明、自适应高度)
  • 原文地址:https://www.cnblogs.com/yb38156/p/9821811.html
Copyright © 2011-2022 走看看