加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

fastJson常用方法总结

发布时间:2020-12-16 18:43:02 所属栏目:百科 来源:网络整理
导读:?1、了解json ?json就是一串字符串 只不过元素会使用特定的符号标注。 ?{} 双括号表示对象 ?[] 中括号表示数组 ?"" 双引号内是属性或值 ?:?冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象) ?所以?{"name": "Kobe"}?可以理解

?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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读