实战解读阿里fastjson基本操作

场景

json是一种很常用的数据传输与存储格式,听说阿里的fastjson转换速度是目前各类json中最快的,本文就以fastjson为例讲解json的基本操作.

知识点

java bean如何转换成 json 字符串?
json字符串 如何转换成 java bean ?
json 字符串 如何转换成 json object ?

实验

代码

package cool.pengych.sparker.test;
import java.util.List;
/**
 *  java bean
 *  字段必须有set、get方法,否则无法完成与fastjson之间的转换
 * @author pengyucheng
 */
class Employee
{
    private String name;
    private int age;

    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
public class Department
{
    private long departId;

    private String departName;

    private List addresses;

    private List employees;

    public long getDepartId() {
        return departId;
    }
    public String getDepartName() {
        return departName;
    }
    public List getAddresses() {
        return addresses;
    }
    public List getEmployees() {
        return employees;
    }
    public void setDepartId(long departId) {
        this.departId = departId;
    }
    public void setDepartName(String departName) {
        this.departName = departName;
    }
    public void setAddresses(List addresses) {
        this.addresses = addresses;
    }
    public void setEmployees(List employees) {
        this.employees = employees;
    }
}
package cool.pengych.sparker.test;

import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * fastjson 基本操作实战
 * jsonString <=> bean
 * jsonString <=> jsonObject
 * 
 * @author pengyucheng
 */
public class TestJson
{
    public static void main(String[] args) 
    {
        /*
         *  Java Bean转换成 json 字符串
         */
        List addresses = new ArrayList();
        addresses.add("gangtou road");
        addresses.add("juli road");

        Employee employee = new Employee();
        employee.setAge(27);
        employee.setName("ivy");
        Employee employee2 = new Employee();
        employee2.setAge(8);
        employee2.setName("vivo");

        List employees = new ArrayList();
        employees.add(employee);
        employees.add(employee2);

        Department depart = new Department();
        depart.setAddresses(addresses);
        depart.setDepartId(1);
        depart.setDepartName("it");
        depart.setEmployees(employees);

        String jsonString = JSON.toJSONString(depart);
        System.out.println("[bean->jsonString] :"+jsonString);
        String prettyJsonString = JSON.toJSONString(depart, true);
        System.out.println("[pretty print] : "+prettyJsonString);

        /*
         * json字符串 转换成 json对象
         */
        JSONObject jsonObj = JSON.parseObject(jsonString);
        String value = (String) jsonObj.get("departName");
        System.out.println("[jsonString -> jsonObject] : "+value);

        /*
         * 将json字符串 转换成 java bean对象
         */
        Department dpt = JSON.parseObject(jsonString, Department.class);
        String dptName = dpt.getDepartName();
        System.out.println(" [json -> bean] : "+dptName);

        /*
         *  JSON Array类型的字符串转换成JSONArray对象
         */
        String jsonArrs = "[{'name':'ivy','age':27},{'name':'vivo','age':22},{'name':'oppo','age':32}]";
        JSONArray array = JSONArray.parseArray(jsonArrs);
        String value2 = array.getJSONObject(0).getString("name");
        System.out.println("[jsonArray.getJSONObject(0).getString(key)] : " + value2);
    }
}
/*
* 从json串中获取其中的JSONArray中的某个元素
*/
        String jsonstr = "{'name':['ivy'],'startAge':['10','20']}";
        JSONObject json = JSON.parseObject(jsonstr);
        String  aget = json.getJSONArray("startAge").getString(0);
        int  age = json.getJSONArray("startAge").getIntValue(0);
        System.out.println(aget +":"+age);

执行结果

[bean->jsonString] :{"addresses":["gangtou road","juli road"],"departId":1,"departName":"it","employees":[{"age":27,"name":"ivy"},{"age":8,"name":"vivo"}]}
[pretty print] : {
    "addresses":[
        "gangtou road",
        "juli road"
    ],
    "departId":1,
    "departName":"it",
    "employees":[
        {
            "age":27,
            "name":"ivy"
        },
        {
            "age":8,
            "name":"vivo"
        }
    ]
}
[jsonString -> jsonObject] : it
[json -> bean] : it
[jsonArray.getJSONObject(0).getString(key)] : ivy
10:10

总结

  • java bean必须有set、get方法,这样才能完成与 json string之间的正常转换!
  • json字符串 与 java bean 可以轻松完成互相转换!而 json 字符串又可以与 json object 转换,从而方便利用 json object中的API最json串进行各种操作!
  • 集合类型json字符串格式:["gangtou road","juli road"] // List [{"age":27,"name":"ivy"},{"age":8,"name":"vivo"}] // List

你可能感兴趣的:(Java)