善其事l利其器篇——FastJson API

FastJson作为阿里的开源框架,基于JSON协议进行序列化、反序列化;支持Json对象与任意Java Bean Class、Collection、Map、Date之间的转换。项目中经常用到,故作此总结,主要针对常用API,侧重实践。


对象及API(常用)

1、JSON解析器:负责实现对象与json串之间的转换工作(序列化、反序列化操作)

2、JSONObject:普通key-value键值对String转换后的序列化对象,实质Map结构。

                            API主要包括1)根据key获取对应value(根据key的类型可调用getString\getInteger等API);2)根据key获取key-value串中包含的数据对象3)Map API 

3、JSONArray:包含key-value键值对的数组结构,实质List。

                            API主要包括1)根据index获取数据中对象(可直接getJSONObject获取JSONObject对象,然后调用getString等获取value值)2)List API

写个例子简单看使用

    public Result around(ProceedingJoinPoint proceedingJoinPoint) {
//        获取java数组
        Object[] args = proceedingJoinPoint.getArgs();
//        将数组转成String
        String string = JSON.toJSON(args).toString();
        System.out.println(string);
//        将string串转成JSONArray
        JSONArray jsonArray = JSONArray.parseArray(string);
//        遍历获取JSONArray中JSONObject,再根据key拿到对应value
        for (int i=0;i<jsonArray.size();i++){
            String bid=jsonArray.getJSONObject(0).getString("businessId");
            String payOrderId=jsonArray.getJSONObject(0).getString("payOrderId");
        }
}

JAVA类转换

重点看一下在序列化对象反序列转成JAVA类时的操作,无外乎转成java bean、List、Map这些日常操作类。

1、JSONObject转java bean,JSONArray转List

    /**
     * 1、将json串转换成java bean
     */
    @Test
    public void testComplexJSONObjectToJavaBean() {
//       将json串转成json对象
        JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);

//       第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类
        Teacher teacher = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Teacher>() {});
        System.out.println(teacher);

//       第二种方式,使用Gson的思想
        Teacher teacher1 = JSONObject.parseObject(jsonObject.toJSONString(), Teacher.class);
        System.out.println(teacher1);
    }
    
    /**
     * 2、json数组串转换成List
     */
    @Test
    public void testJsonArrayToJavaList() {
//       将json串转换成json数组对象
        JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);

//       第一种方式,使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创建其子类
        ArrayList<Student> students = JSONArray.parseObject(jsonArray.toJSONString(), new TypeReference<ArrayList<Student>>() {});

//       第二种方式,使用Gson的思想
        List<Student> students1 = JSONArray.parseArray(jsonArray.toJSONString(), Student.class);
    }

2、JSONObject转map,因为JSONObject本身就是key-value结构,所以java bean 转 Map直接先转成json串,再parseObject方可转成对应map,属性和属性值分别对应map 的k-v

  JSONObject.parseObject(JSON.toJSONString(messageDto));

3、JSONArray转Map,对象数组转JSONArray后,遍历jsonArray,通过获取jsonObject对象转成map后,对map操作。而后可通过List或Map集合承载每个jsonObject转成的map。

   获取java数组
        Object[] args = proceedingJoinPoint.getArgs();
        JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(args));
        for (int i = 0; i < jsonArray.size(); i++) {
            Map map=JSONObject.parseObject(jsonArray.getJSONObject(i).toJSONString());
            Object bii=map.get("buId");
            Object pii=map.get("payOId");
            Object psi=map.get("pageSize");
        JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(args));
        List<Map<String,Object>> mapListJson = (List)jsonArray;








猜你喜欢

转载自blog.csdn.net/Daybreak1209/article/details/80582561