Java中使用FastJSON进行对象的序列化和反序列化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

以上是关于Java中使用FastJSON进行对象的序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章

fastjson进行json的解析和序列化

FastJson的使用

fastjson1.2.79兼容1.1.41吗

Jackson序列化(8)— 支持泛型的反序列化

fastjson不能处理静态对象吗

fastjson反序列化漏洞原理及利用