1. 程式人生 > >Java中使用FastJSON進行物件的序列化和反序列化

Java中使用FastJSON進行物件的序列化和反序列化

Java中使用FastJSON進行物件的序列化和反序列化

1.新增依賴,maven的pom.xml檔案中新增以下依賴

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
</dependency>

2.FastJSON序列化和反序列化工具類

import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

// JSON/物件轉換類
public class JsonUtils {

    /**
     * JSON字串轉換成物件
     */
    public static <T> T jsonStringToObject(String jsonStr,Class<T> obj){
        try{
             return JSONObject.parseObject(jsonStr, obj);
        }catch(Exception e){
            System.out.println("將JSON串{}轉換成 指定物件失敗:"+jsonStr);
            e.printStackTrace();
        }
        return null;
    }

     /**
     * 物件轉JSON    
     */
    public static <T> String objectToJson(T obj){
        try{
            String json=JSONObject.toJSONString(obj);
            return json;
        }catch(Exception e){
            System.out.println("將指定物件轉成JSON串{}失敗:"+obj.toString());
            e.printStackTrace();
        }
        return "";
    }

     /**
     * List<T>物件轉成json
     */
    public static<T> String listToJsonString(List<T> objList){
        try{
            String json=JSONObject.toJSONString(objList);
            return json;
        }catch(Exception e){
            System.out.println("將物件列表轉成JSON串{}失敗:"+objList.toString());
            e.printStackTrace();
        }
        return "";
    }

     /**
     * json轉換成物件列表List<T>
     */
    public static <T> List<T> jsonStringToList(String json,Class<T> obj){
        try{
            return JSONArray.parseArray(json, obj);
        }catch(Exception e){
            System.out.println("將JSON串{}轉成物件列表失敗:"+json);
            e.printStackTrace();
        }
        return null;
    }

    /*
     * 將JSON串轉換為JSONOBJECT
     */
    public static JSONObject stringTOJSONObject(String json){
        JSONObject jsonObject = null;
        try {
            jsonObject = JSONObject.parseObject(json);
        } catch (Exception e) {
            System.out.println("JSON串{} 轉換成 JsonObject失敗"+json);
        }
        return jsonObject;
    }
}

3.使用

(1)序列化

List<User> users=new ArrayList<User>();
    for(int i=0;i<20;i++){
        User user=new User();
        user.setName("FastJSON"+i);
        user.setAge(20+i);
        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
        user.setBirthday(dateformat.parse("1991-10-01"));
        user.setEmail("12345678"+i+"@qq.com");

        // 序列化單個物件
        String json=JsonUtils.objectToJson(user);

        users.add(user);

        // 序列化物件列表
        // String json=JsonUtils.listToJsonString(users);
}       

(2)反序列化

        // 反序列化單個物件
        User u=JsonUtils.jsonStringToObject(json, User.class);
        System.out.println(u.toString());

        // 將JSON串轉換為JSONOBJECT
        JSONObject js=JsonUtils.stringTOJSONObject(json);
        System.out.println(js);

        // 反序列化物件列表
        List<User> list=JsonUtils.jsonStringToList(json, User.class);
        System.out.println(list);