Java序列化和反序列化【idea】

在java中常用阿里巴巴的fastjson 和谷歌Gson进行json文件的解析和序列化。

为java项目添加解析json的jar包

maven仓库地址:  https://mvnrepository.com/

选择一个合适的版本,且选择包依赖,如这里我选择的是maven依赖,复制(注意不要复制第一行被注释的内容)

复制好之后

打开项目设置,点击+,并选择从maven添加,将之前代码粘贴上即可自动下载好jar包



Json的序列化和反序列化

实体类

public class User {

    private String name;
    private String passwold2;

    public User(){

    }
    public User(String name, String passwold2, String email) {
        this.name = name;
        this.passwold2 = passwold2;
        this.email = email;
    }



    public String getPasswold2() {
        return passwold2;
    }

    public void setPasswold2(String passwold2) {
        this.passwold2 = passwold2;
    }

    private String email;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }



    @Override
    public String toString() {
        return "姓名:"+name+"\n密码:"+getPasswold2()+"\n电子邮箱:"+email;
    }
}
import java.util.List;

class Student{
    private int id;
    private int age;
    private String name;
    private int[] data;
    private List<User> userList;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int[] getData() {
        return data;
    }

    public void setData(int[] data) {
        this.data = data;
    }

    public List<User> getUserList() {
        return userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }
}

fastJson的使用

public class Start {
    public static void main(String[]args){
//    String jsonString="{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"[email protected]\"}";
//        JSONObject json2 = JSONObject.toJSON(jsonString);
//        User user = new User();
//        user.setName(json2.getString("name"));
//        user.setPasswold(json2.getString("password"));
//        user.setEmail(json2.getString("email"));
//        System.out.println(user.toString());

        //序列化基础
        System.out.println("------------------序列化-----------");
        User user=new User();
        user.setName("校长");
        user.setPasswold2("10000");
        user.setEmail("[email protected]");
        String jsonString0= JSON.toJSONString(user);
        System.out.println(jsonString0);
        //序列化进阶
        Student student=new Student();
        student.setId(1);
        student.setAge(16);
        student.setName("小明");
        student.setData(new int[]{1,2,3});
        User user00=new User("A","A1","100@");
        User user01=new User("B","A2","600@");
        List<User> userList=new ArrayList<>();
        userList.add(user00);
        userList.add(user00);
        userList.add(user01);
        student.setUserList(userList);
        String jsdata=JSON.toJSONString(student);
        System.out.println(jsdata);
        System.out.println("------------------反序列化-----------");
        //反序列化
        String jsondata="{\"name\":\"小白\",\"passwold2\":\"100000\",\"email\":\"[email protected]\"}";
        User user1=JSON.parseObject(jsondata,User.class);
        System.out.printf(user1.toString());
        //反序列化进阶
        Student student1=JSON.parseObject(jsdata,Student.class);
        for (User var:student1.getUserList()) {
            System.out.printf(var.toString());
        }

        //使用JSONObject解析json
        JSONObject jsonObject=JSON.parseObject(jsondata);
        String name=jsonObject.getString("name");
        String passwold2=jsonObject.getString("passwold2");
        String email=jsonObject.getString("email");
        System.out.printf("\nname=%s\npasswold=%s\nemail=%s",name,passwold2,email);








    }
}

Gson的使用

/**
 * Gson解析json
 * 作者:Ai
 * 时间:2018年5月4日22:09:37
 */
public class Domain {

    public static void main(String[] args){
        String jsondata="{\"name\":\"小白\",\"passwold2\":\"100000\",\"email\":\"[email protected]\"}";

        Gson gson = new Gson();
        User user2 = gson.fromJson(jsondata,User.class); //将其转化为类的对象
        System.out.println("name is :  "+ user2.getName());
        System.out.println("passwold is :  "+ user2.getPasswold2());
        System.out.println("email is :"+user2.getEmail());
//        jiexiJson();
        Student student2=new Student();
        student2.setId(1);
        student2.setName("小明");
        student2.setAge(19);
        student2.setData(new int[]{11,22,33});
        List<User> userList=new ArrayList<>();
        userList.add(new User("A","A11","100@"));
        userList.add(new User("B","B11","200@"));
        userList.add(new User("C","C11","300@"));
        userList.add(new User("C","C11","300@"));
        student2.setUserList(userList);
        //序列化
        String js = gson.toJson(student2);
        System.out.println(js);
        //反序列化
        Student student=gson.fromJson(js,Student.class);
        System.out.println("id="+student.getId());
        System.out.println("name="+student.getName());
        System.out.println("age="+student.getAge());
        System.out.println("data="+student.getData()[0]);

        //JsonObject 的使用
        JsonObject jsonObject= gson.fromJson(js,JsonObject.class);
        //取得元素
        JsonElement name= jsonObject.get("name");
        //取得值
        System.out.println(name.getAsString());




    }

    /**
     * JsonReader解析json
     */
    static void  jiexiJson(){
        String jsondata="{\"name\":\"小白\",\"passwold2\":\"100000\",\"email\":\"[email protected]\"}";
        JsonReader json=new JsonReader(new StringReader(jsondata));
        try {
            json.beginArray();
            while(json.hasNext())
            {
                json.beginObject();
                while(json.hasNext())
                {
                    String temp = json.nextName();
                    if(temp.equals("name"))
                    {
                        System.out.println("name is : " + json.nextString());
                    }
                    else if(temp.equals("passwold2"))
                    {
                        System.out.println("age is: "+ json.nextString());
                    }
                    else if (temp.equals("email")){
                        System.out.println("email is: "+json.nextString());
                    }
                }
                json.endObject();
            }
            json.endArray();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
}
发布了25 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37446649/article/details/89400381