Fastjson使用示例及常见问题(九)
阅读原文时间:2023年07月09日阅读:1

一、介绍

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

Fastjson使用场景

Fastjson已经被广泛使用在各种场景,包括cache存储、RPC通讯、MQ通讯、网络协议通讯、Android客户端、Ajax服务器处理程序等等。

2.1 速度快

fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。

2.2 使用广泛

fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。

二、代码示例

使用示例见链接:https://www.w3cschool.cn/fastjson/

代码示例:

package com.asd.reserve.utils.fastjson.demo2;

/**
* @author zs
* @date 2019/11/22 14:53
*/

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

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

public class FastJsonDemo {

static class Person{  
    private String id ;  
    private String name;  
    private int age ;

    public Person(){

    }  
    public Person(String id,String name,int age){  
        this.id=id;  
        this.name=name;  
        this.age=age;  
    }  
    public String getId() {  
        return id;  
    }  
    public void setId(String id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        this.age = age;  
    }  
    @Override  
    public String toString() {  
        return "Person \[age=" + age + ", id=" + id + ", name=" + name + "\]";  
    }  
}  
public static void main(String\[\] args) {  
    //method1();  
    //method2();  
    //method3();  
    //method4();  
    method5();  
}

/\*\*  
\*@Author: zs on 2020/1/3 9:56  
\*@param:  
\*@return:  
\*@Description:对象与json串互转  
\*/

public static void method1(){

    System.out.println("javabean转化示例开始----------");

    Person person = new Person("1","fastjson",1);  
    //将javabean转化成json字符串  
    String jsonString = JSON.toJSONString(person);  
    System.out.println(jsonString);  
    //将json字符串转化成javabean对象,  
    person =JSON.parseObject(jsonString,Person.class);  
    System.out.println(person.toString());  
    System.out.println("javabean转化示例结束----------");  
}

/\*\*  
\*@Author: zs on 2020/1/3 9:56  
\*@param:  
\*@return:  
\*@Description:List集合与json串互转  
\*/

public static void method2(){

    System.out.println("List<javabean>转化示例开始----------");

    Person person1 = new Person("1","fastjson1",1);  
    Person person2 = new Person("2","fastjson2",2);  
    List<Person> personList = new ArrayList<Person>();  
    personList.add(person1);  
    personList.add(person2);  
    String jsonString = JSON.toJSONString(personList);  
    System.out.println("json字符串:"+jsonString);  
    //解析json字符串  
    List<Person> persons2 = JSON.parseArray(jsonString,Person.class);  
    //输出解析后的person对象,也可以通过调试模式查看persons2的结构  
    System.out.println("person1对象:"+persons2.get(0).toString());  
    System.out.println("person2对象:"+persons2.get(1).toString());  
    System.out.println("List<javabean>转化示例结束----------");  
}

public static void method3(){

    String result = "生成成功";  
    String status = JSON.toJSONString(result);  
    System.out.println(result);  
    System.out.println(status);  
}

public static void method4(){  
    String status = "{\\"status\\":\\"生成成功\\"}";  
    JSONObject jsonObject = JSONObject.parseObject(status);  
    Object o = jsonObject.get("status");  
    System.out.println(o);  
}

public static void method5(){

    /\*\*  
     \* 数据样式  
     \* {  
     status: success,  
     root: \[{  
     type: 'long',  
     propName: 'reins',  
     location: '0',  
     propValue: '5228',  
     desc: 'zs'  
     }, {  
     type: 'char',  
     propName: 'reserve',  
     location: '0',  
     propValue: '-1',  
     desc: 'zs'  
     }\]  
     }\*/  
    String json = "{success: true,root: \[{id: '123',name: '123',age: '123'}, {id: '123',name: '12321',age: '13123'}\]}";  
    JSONObject jsonObject = JSONObject.parseObject(json);  
    Object success = jsonObject.get("success");  
    Object root = jsonObject.get("root");  
    List<Person> personList = JSON.parseArray(root+"", Person.class);  
    System.out.println(success);  
}  

}