Java Json常用方法

什么是fastjson?

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

fastjson的优点

  1. 速度快: fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
  2. 使用广泛:fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
  3. 测试完备:fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
  4. 使用简单 :fastjson的API十分简洁。 String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}", VO.class); //反序列化
  5. 功能完备: 支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。

下载

fastjson包下载地址:https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.83/fastjson-1.2.83.jar

低版本fastjson可能存在漏洞,建议使用fastjson较新版本>1.2.48

安装

Idea 中导入fastjson包的方法。

ctrl+alt+shift+S 打开项目结构,依次点击Libraries->+加号。

Java中fastjson包使用总结

将刚才下载的jar文件导入我们的项目


Java中fastjson包使用总结2.maven导入fastjson
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

常用api

fastjson API 入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray

public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject 
    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 

public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 

public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 

public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 

public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

java类转换为json字符串

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;

/**
 *Java对象转json字符串
 */
public class StringToJSON {
    public static void main(String[] args) {
        //定义JSON字符串
        Employee e = new Employee("易学教程","male", 22);
        System.out.println(JSON.toJSONString(e));
        Employee e2 = new Employee("易学教程2","male", 23);
        Employee e3 = new Employee("易学教程3","male", 25);
        List<Employee> list = new ArrayList<>();
        list.add(e);
        list.add(e2);
        list.add(e3);
        System.out.println(JSON.toJSONString(list));

    }

    //JavaBean.java
    public static class  Employee{

        private String name;
        private String sex;
        private Integer age;

        @Override
        public String toString() {
            return "Employee{" +
                    "name='" + name + '\'' +
                    ", sex='" + sex + '\'' +
                    ", age=" + age +
                    '}';
        }

        public Employee(String name, String sex, Integer age) {
            this.name = name;
            this.sex = sex;
            this.age = age;
        }

        public String getName() {
            return name;
        }

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

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public Integer getAge() {
            return age;
        }

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

测试一下

解析Json字符串反序列化为Java对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

import java.util.List;

/**
 *解析Json字符串反序列化为Java对象
 */
public class StringToJSON {


    public static void main(String[] args) {
        //定义JSON字符串
        String jsonStr = "{\"age\":22,\"name\":\"易学教程\",\"sex\":\"male\"}";
        Employee e = (Employee) JSON.parseObject(jsonStr, Employee.class);//简单java类解析
        System.out.println("json字符串转简单java对象:"+e.toString());
        //解析带有list的json字符串
        String jsonStr2 = "[{\"age\":22,\"name\":\"易学教程\",\"sex\":\"male\"},{\"age\":23,\"name\":\"易学教程2\",\"sex\":\"male\"},{\"age\":25,\"name\":\"易学教程3\",\"sex\":\"male\"}]";
        List<Employee> list =
                JSONObject.parseObject(jsonStr2, new TypeReference<List<Employee>>(){});
        System.out.println(list);

    }


    //JavaBean.java
    public static class  Employee{

        private String name;
        private String sex;
        private Integer age;

        @Override
        public String toString() {
            return "Employee{" +
                    "name='" + name + '\'' +
                    ", sex='" + sex + '\'' +
                    ", age=" + age +
                    '}';
        }

        public Employee() {
        }

        public Employee(String name, String sex, Integer age) {
            this.name = name;
            this.sex = sex;
            this.age = age;
        }

        public String getName() {
            return name;
        }

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

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public Integer getAge() {
            return age;
        }

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

测试一下