JavaWeb_(Jar)使用fastjson解析json和序列化对象

 

 

  菜鸟教程  传送门

  JSON官网  传送门

  fastjson插件下载  传送门

 

  序列化【百度百科】:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象

  反序列化:反序列化从序列化的表示形式中提取数据,并直接设置对象状态

  持久化【百度百科】:持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)

 

简单数据解析json和序列化对象 

  

 

package com.Gary.util;

import com.Gary.model.Goods;
import com.alibaba.fastjson.JSON;

public class GaryJson {
    public static void main(String[] args) {
        
        //序列化    持久化
        Goods    goods = new Goods("香蕉","这是香蕉",100,400);
        String json = JSON.toJSONString(goods);
        System.out.println(json);
        
        //反序列化    解析
        String s = "{\"des\":\"这是香蕉\",\"inventory\":400,\"name\":\"香蕉\",\"price\":100}";
        Goods goods2 = JSON.parseObject(s, Goods.class);
        System.out.println(goods2.getName());
        System.out.println(goods2.getDes());
        System.out.println(goods2.getPrice());
        System.out.println(goods2.getInventory());
    }
}
GaryJson.java

 

  通常境况下json数据都会直接获取,复制粘贴json数据时,可通过@""方法

  解析字符串时可@""方法将代码copy进" "中编辑器会自动添加"\"及"\r"符

  

 

 

复杂数据解析json和序列化对象 

  解析JSON数组对象时候需要存在一个对象集合去保存

 

[
{
    "name":"Gary1",
    "age":10,
    "sex":"man"
},
{
    "name":"Gary2",
    "age":20,
    "sex":"man"
},
{
    "name":"Gary3",
    "age":30,
    "sex":"women"
}
]
需要解析的json

 

package com.Gary.util;

import java.util.List;


import com.alibaba.fastjson.JSON;

public class GaryJson {
    public static void main(String[] args) {
        
        String s = "[\r\n" + 
                "{\r\n" + 
                "    \"name\":\"Gary1\",\r\n" + 
                "    \"age\":10,\r\n" + 
                "    \"sex\":\"man\"\r\n" + 
                "},\r\n" + 
                "{\r\n" + 
                "    \"name\":\"Gary2\",\r\n" + 
                "    \"age\":20,\r\n" + 
                "    \"sex\":\"man\"\r\n" + 
                "},\r\n" + 
                "{\r\n" + 
                "    \"name\":\"Gary3\",\r\n" + 
                "    \"age\":30,\r\n" + 
                "    \"sex\":\"women\"\r\n" + 
                "}\r\n" + 
                "]";
        
        List<User> list =    JSON.parseArray(s,(User.class));
        for(User u : list) {
            System.out.println(u);
        }
    }
}
GaryJson.java

 

package com.Gary.util;

public class User {
    private String name;
    private String sex;
    private int age;
    public User(String name, String sex, int age) {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    //重写toString方法方便观察
    @Override
    public String toString() {
        return "User [name=" + name + ", sex=" + sex + ", age=" + age + "]";
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
User.java

 

  需要解释的JSON对象

{
    "name":"Gary1",
    "age":10,
    "sex":"man"
}

 

  存在一个类要和JSON对象属性保持一致

    private String name;
    private String sex;
    private int age;

 

  通过fastjson.JSON解析JSON数据

    List<User> list =    JSON.parseArray(s,(User.class));
    for(User u : list) {
        System.out.println(u);
    }

 

posted @ 2019-01-24 13:22  Cynical丶Gary  阅读(370)  评论(0编辑  收藏  举报