Alibaba 开源的 fastjson 日常之中常用方法总结

目录

1、使用场景

2、转换方法介绍和代码实现

3、成果展现

4、总结

5、参考文章


 

1、使用场景

        最近这一两周,按照公司要求需要对接用户中心的接口;对方的接口是使用PHP所写的提供的RestFull风格的接口。并且由于我这边需要对接的项目涉及众多多达10个左右。于是我需要封装相关请求接口,把相关接口实现封装到一个jar文件之中啦。这样其他项目直接引入即可就ok。但是在前端请求参数的时候需要需要把相关数据转换为JSON格式;于是使用到了JSON解析和转换相关函数。

      以下个人观点:

        有人说目前上很多人已经写过类似文章;为你还非得去写一下呢?多此一举吗?个人有下3点总结

       (1)、是在参考多篇文章之后对此知识点的总结。(强调一下 是参阅很多文章之后的总结)

       (2)、如果没有总结,你还得话很多时间去搜索一通

       (3)、下次使用类似知识点 可以直接打开自己Blog一个网址通达。

2、转换方法介绍和代码实现

     本文主要主要实现一些常用的使用fastjson转的方法 后面再补充相关内容主要有一下方法

package com.example.fastjson;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.example.fastjson.model.Person;

import java.util.List;
import java.util.Map;

/**
 * @Classname FastJsonFrequentlyUtils
 * @Description 基础Fastjson总结
 * @Date 2019/11/30 9:27
 * @Created by jianxiapc
 */
public class FastJsonFrequentlyUtils {

    /**
     * json字符串转换为json后 以及key值获得JsonArray
     * @param jsonString
     * @param dataArrayKey
     * @return
     */
    public static JSONArray convertStringToJSONArray(String jsonString,String dataArrayKey){
        JSONObject jsonObject = JSONObject.parseObject(jsonString);
        JSONArray dataJsonArray = jsonObject.getJSONArray(dataArrayKey);
        return dataJsonArray;
    }

    /**
     * 字符串转换为JsonArray
     * @param jsonArrayString
     * @return
     */
    public static JSONArray convertStringToJSONArray(String jsonArrayString){
        JSONArray jsonArray = JSONArray.parseArray(jsonArrayString);
        return jsonArray;
    }

    public static JSONObject convertStringToJSONObject(String jsonString){
        JSONObject jsonObj = JSONObject.parseObject(jsonString);
        return jsonObj;
    }

    /**
     *
     * @param jsonArray
     * @param index
     * @return
     */
    public static JSONObject getJSONObjectFromJsonArray(JSONArray jsonArray,int index){
        JSONObject jsonData = new JSONObject();
        for(int i=0;i<jsonArray.size();i++){
            if(i==index) {
                jsonData = jsonArray.getJSONObject(i);
            }
        }
        return jsonData;
    }

    /**
     * fastjson  字符串转List
     * @param jsonString
     * @param bean
     * @param <T>
     * @return
     */
    public static <T> List<T> convertStringToList(String jsonString,Class<T> bean){
        List<T> list = JSONObject.parseArray(jsonString,bean);
        return list;
    }

    /**
     * 自定义对象转化成json格式的字符串
     * @param bean
     * @param <T>
     * @return
     */
    public static<T>  String convertBeantoJSONString(T bean){
        String peopleJson = JSON.toJSONString(bean);
        System.out.println(peopleJson);
        return peopleJson;
    }
    /**
     * fastjson  List转JSONArray
     * @param listData
     * @return
     */
    public  static JSONArray convertListToJSONArray(List listData){
        JSONArray jsonArray= JSONArray.parseArray(JSON.toJSONString(listData));
        return jsonArray;
    }

    /**
     * 针对JsonArray转换为对应的Bean对象
     * fastjson  JSONArray转List
     * @param jsonArray
     * @param bean
     * @return
     */
    public  static <T> List<T>  convertJSONArrayToList(JSONArray jsonArray, Class<T> bean) {
        List<T>  list = JSONObject.parseArray(jsonArray.toJSONString(), bean);
        return list;
    }

    /**
     * JSONObject转化成Map集合
     * @param jsonString
     * @return
     */
    public  static Map  convertJSONStringToMap(String jsonString){
        Map map = JSONObject.parseObject(jsonString, Map.class);
        return map;
    }
    /**
     * JSONObject转换为Map对象
     * @param jsonObj
     * @return
     */
    public  static Map<String, Object> convertJSONToMap(JSONObject jsonObj){
        /**
         JSONObject obj = new JSONObject();
         {
         obj.put("key1", "value1");
         obj.put("key2", "value2");
         obj.put("key3", "value3");
         * }
         */
        Map<String, Object> resultMap = JSONObject.parseObject(jsonObj.toJSONString(), new TypeReference<Map<String, Object>>(){});
        return resultMap;
    }

    public static void main(String[] args) {

        //1、 convertStringToJSONObject
         String jsonString="{'name':'蜀山剑侠','id':'007','age':37}";
        JSONObject jsonObject=convertStringToJSONObject(jsonString);
        System.out.println("1 StringToJSONObject: \n"+jsonObject);

        //2、JSONObject转化成自定义类对象
        Person person = JSONObject.parseObject(jsonString, Person.class);
        System.out.println(person.toString());

        //3、convertJSONToMap
        Map map =convertJSONStringToMap(jsonString);
        System.out.println("3 "+map);

        //4. 自定义对象转化成json格式的字符串
        Person personObj =new Person();
        personObj.setId("008");
        personObj.setAge(18);
        personObj.setName("燕子李三");
        String peopleJson =convertBeantoJSONString(personObj);
        System.out.println("4 peopleJson:\n"+peopleJson);

        //5. String类型转化成JSONObject;
        String str = "{\"result\":\"success\",\"message\":\"成功!\"}";
        JSONObject jsonObj=convertStringToJSONObject(str);
        System.out.println(" 5 jsonObj:\n"+jsonObj);

        //6.1. JSONObject转化成JSONArray的两种方式
        String containJsonArrayJsonStr = "{\"result\":\"success\",\"message\":\"成功!\",\"data\":[{\"name\":\"怪侠一枝梅\",\"age\":\"36\"}]}";

        JSONArray dataJsonArray=convertStringToJSONArray(containJsonArrayJsonStr,"data");
        System.out.println("6.1 data jsonArray:\n"+dataJsonArray);
        //6.2  直接传输JsonArray 字符串对象返回JsonArray
        String jsonArrayStr="[{\"name\":\"怪侠一枝梅\",\"age\":\"36\"}]";
        JSONArray dataJsonArrayObj= convertStringToJSONArray(jsonArrayStr);
        System.out.println("6.2 dataJsonArrayObj :\n"+dataJsonArrayObj);

        //7. jsonArray转化成JSONObject并取出其中的元素数据
        JSONObject jsonObj0=getJSONObjectFromJsonArray(dataJsonArrayObj,0);
        String name = jsonObj0.getString("name");
        System.out.println("7 name :"+name);
        System.out.println("7 jsonObj0 :\n"+jsonObj0);

        //8. convertJSONToMap 转换JSON为Map
       Map mapObj=convertJSONStringToMap(jsonString);
       System.out.println("8. map: "+mapObj.toString());

       //9. convertJSONToMap 转换JSON对象为Map
        Map jsonMapObj=convertJSONToMap(jsonObj);
        System.out.println("9. jsonMap: "+jsonMapObj.toString());
        // 10. convertJSONArrayToList
        String jsonArrayListStr="[{\"name\":\"怪侠一枝梅\",\"age\":\"36\",\"id\":\"007\"},{\"name\":\"蜀山剑侠\",\"age\":\"28\",\"id\":\"008\"}]";
        JSONArray jsonListArray=convertStringToJSONArray(jsonArrayListStr);
        List<Person> personList=convertJSONArrayToList(jsonListArray,Person.class);
        System.out.println("10. personList "+personList.toString());

        //11. convertListToJSONArray
        JSONArray personJsonArray=convertListToJSONArray(personList);
        System.out.println("11. personJsonArray "+personJsonArray.toString());

        //12. convertStringToList
        List<Person> personList2=convertStringToList(jsonArrayListStr,Person.class);
        System.out.println("12. personListOne "+personList2.toString());
        /**
        String jsonArrayStr = "";
        JSONArray jsonArray=convertStringToJSONArray(jsonArrayStr);
        System.out.println("jsonArray: \n"+jsonArray.toJSONString());
         */
    }


}

3、成果展现

1 StringToJSONObject: 
{"name":"蜀山剑侠","id":"007","age":37}
Person{name='蜀山剑侠', id='007', age=37}
3 {name=蜀山剑侠, id=007, age=37}
{"age":18,"id":"008","name":"燕子李三"}
4 peopleJson:
{"age":18,"id":"008","name":"燕子李三"}
 5 jsonObj:
{"result":"success","message":"成功!"}
6.1 data jsonArray:
[{"name":"怪侠一枝梅","age":"36"}]
6.2 dataJsonArrayObj :
[{"name":"怪侠一枝梅","age":"36"}]
7 name :怪侠一枝梅
7 jsonObj0 :
{"name":"怪侠一枝梅","age":"36"}
8. map: {name=蜀山剑侠, id=007, age=37}
9. jsonMap: {result=success, message=成功!}
10. personList [Person{name='怪侠一枝梅', id='007', age=36}, Person{name='蜀山剑侠', id='008', age=28}]
11. personJsonArray [{"name":"怪侠一枝梅","id":"007","age":36},{"name":"蜀山剑侠","id":"008","age":28}]
12. personListOne [Person{name='怪侠一枝梅', id='007', age=36}, Person{name='蜀山剑侠', id='008', age=28}]

4、总结

    本文主要是针对本次在对接用户中心需要使用到的JSON转换方法基本总结,同时也参阅网上其他文章。在自己总结的基础上后续对自己查阅便捷,同时也能够帮助其他人。

   源码所在位置:https://github.com/jianxia612/JavaBaseSample.git

5、参考文章

JSONObject、JSONArray与String之间的转换

JSONObject、Object、Json字符串的转换

字符串、Map、List、数组、JsonObject、JsonArray、对象之间相互转换

fastJson中java对象 jsonObject jsonArray之间转换

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值