FastJSON学习与简单实践

JSON类

FastJson类中提供了很多方法,但是我们只要学习其中几个核心的方法就行了。那么哪几个方法是核心方法呢,我们用JSON类的目的是什么呢,无非就是将一个json形式的字符串转化为一个java中的json对象或者json数组。或者是将一个java中json对象转化为json字符串。
- Static Object: parse(String text)
这是JSON类的一个static方法,我们通过JSON的api可以看出,它其中几乎所有的方法都是static的,这就方便我们直接使用JSON类来调用这些方法。而不用去创建JSON实例了。这个对象时说返回一个Object对象,但是我输入一个json字符串后,通过其解析返回的是JSONObject对象,这点不知是如何理解的,存在歧义。
因此,为了避免这种歧义,我们可以用下面的两种解析json字符串的方法。
- static JSONObject:parseObject(String text)
这个方法明确是说将一个string字符串解析为一个JSONObject对象。

//JSON
        String str = "{'name':'kobe','age':23}";
        String str1 = "";
        Object object = JSON.parseObject(str);
        str = JSON.toJSONString(object);
  • static JSONArray: parseArray(String text)
    这个方法是明确的说将一个字符串解析为一个JSON数组的形式,在这个数组中的每个元素都是JSONObject类型的。
String jsonStr = "[{fieldName:'sex',fieldType:'radio',fieldValue:['man','women']}]";
JSONArray jsonArray = JSONArray.parseArray(jsonStr);
JSONObject jsonObject = jsonArray.getJSONObject(0);

JSONObject

构造方法:

JSONObject共有四个构造方法,其中有一个构造方法值得我们关注:
JSONObject(Map

//JSONObject
        Map<String,Object> map = new HashMap();
        map.put("name","kobe");
        map.put("age",38);
        map.put("points","25.5");
        map.put("birth",new Date());
        JSONObject jsonObj = new JSONObject(map);

除了上面所说的用构造方法实例化JSONObject对象外,我们要知道JSONObject是继承与JSON类的,因此我们同样可以通过使用JSON类中的方法来解析字符串得到JSONObject类。

method

既然已经得到了JSONObject对象了,那我们就得从这个对象中获得一些键的值了。这些键的值得获取方式都是通过get+类型获得的。

  • get(Object key)

这可以说是相当于所有get方法的一个总的方法,即其他所有get+类型的方法都可以用此方法来代替。因为该方法得到的是一个Object对象,如果你想获得想要的类型的对象,只需要强制转换一下就行。

        String wife = (String)jsonObj.get("wife");
  • getDate(String key)
    用该方法可以得到一个Date对象。
Date date = jsonObj.getDate("birth");
  • getDouble(String key)
    获得一个Double型的对象。

  • getDoubleValue(String key)
    该方法得到的是一个double的基本类型的变量值。
    类似上面两组的方法还有getByte/getByteValue,getFloat/getFloatValue,getInteger/getIntValue。

  • getJSONObject(String key)
    通过key得到一个JSONObject对象,也就是相当于json的嵌套写法。或者是java中put是value是一个JSONObject对象

  • getJSONArray(String key)
    同上。
  • put(String key, Object value)
    为JSONObject对象添加一组键值对。
  • remove(String key)
    从JSONObject中移除一组键值对。
    后来,我又看了一下JSONObject的源码,有种恍然大悟的感觉。原来这里所有的get、remove、put操作都是转化为一个对map的操作。那么这个map是哪里来的呢,还记JSONObject的构造函数嘛!对!就是那个map,几乎所有的操作都是和map息息相关的,因此,从某种意义上来说,我们可以吧JSONObject对象当做一个Map对象来看待。
    下面是JSONObject中的部分源码:
private final Map<String, Object> map;

    public JSONObject(){
        this(16, false);
    }

    public JSONObject(Map<String, Object> map){
        this.map = map;
    }
      public int size() {
        return map.size();
    }

    public boolean isEmpty() {
        return map.isEmpty();
    }
     public Object get(Object key) {
        return map.get(key);
    }
     public JSONObject getJSONObject(String key) {
        Object value = map.get(key);

        if (value instanceof JSONObject) {
            return (JSONObject) value;
        }

        return (JSONObject) toJSON(value);
    }
     public Boolean getBoolean(String key) {
        Object value = get(key);

        if (value == null) {
            return null;
        }

        return castToBoolean(value);
    }

JSONArray

构造函数

JSONArray(List list)
当你在看到这个构造函数的时候,会不会想到什么东西呢。或者说你已经明白了JSONArray是怎么回事了,对的!你没有猜错,它和JSONObject类似,它的核心就是对list对象的操作。因此,我就列出它常用的方法,大部分都不需要解释了,因为可以看成是操作list。
- add(int index, Object element)
- add(Object e)
- contains(Object o)
- get(int index)
- getBoolean(int index)
- getBooleanValue(int index)
- getDate()
- getString()
- isEmpty()
- interator()
- remove(int index)
- size()
以上的这些方法基本上都是list中的方法,其中get这些方法是说取index上具体类型的对象。
下面着重讲这几个方法:
- getJSONObject/getJSONArray
其实这两个方法也不特殊,和上面的get类似,只不过这里放在list中的元素是一个JSONObject/JSONArray对象而已。
- toArray()
将一个JSONArray转化为一个Object[]数组。
- toArray(T[] a)
将一个JSONArray转化为一个T[]型的a数组,这里T表示泛型。也就是在上一个方法的基础上,具体指定了转化后的数组类型。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值