fastjson 簡單使用 及其JSONObject使用

阿里巴巴FastJson是一個Json處理工具包,包括「序列化」和「反序列化」兩部分,它具有以下特徵:
速度最快,測試代表,fastjson具備極快的性能,超越任其餘的Java Json parser。包括自稱最快的JackJson;
功能強大,徹底支持Java Bean、集合、Map、日期、Enum,支持範型,支持自省;無依賴,可以直接運行在Java SE 5.0以上版本;支持Android;開源 (Apache 2.0)java

源碼地址:https://github.com/alibaba/fastjsongit


Fastjson API入口類是com.alibaba.fastjson.JSON,經常使用的序列化操做均可以在JSON類上的靜態方法直接完成。github

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 parseObject(String text, Class clazz); // 把JSON文本parse爲JavaBean
*public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
*public static final List parseArray(String text, Class 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。json

 

maven:數組

    <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.31</version>
        </dependency>

通常只用第二個fastjson就能夠socket

 

demo:maven

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import java.util.ArrayList;
import java.util.List;
import lombok.ToString;

public class fastjson {

    public static void main(String[] args) {
        Group group = new Group();
        group.setId(0L);
        group.setName("admin");

        User guestUser = new User();
        guestUser.setId(2L);
        guestUser.setName("guest");

        User rootUser = new User();
        rootUser.setId(3L);
        rootUser.setName("root");

        group.getUsers().add(guestUser);
        group.getUsers().add(rootUser);

        String jsonString = JSON.toJSONString(group);
        System.out.println(jsonString);
        Group group2 = JSON.parseObject(jsonString, Group.class);
        System.out.println("===============List==============");
        String strList=JSON.toJSONString(group.getUsers());
        System.out.println(strList);
 List<User> list=JSON.parseArray(strList,User.class); System.out.println(JSON.toJSONString(list)); List<User> list2=JSON.parseObject(strList,new TypeReference<List<User>>(){}); System.out.println(JSON.toJSONString(list2));
    }
}

@ToString
class User {

    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

class Group {

    private Long id;
    private String name;
    private List<User> users = new ArrayList<User>();

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }
}

output:工具

{"id":0,"name":"admin","users":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]}
Disconnected from the target VM, address: '127.0.0.1:1655', transport: 'socket'
===============List==============
[{"id":2,"name":"guest"},{"id":3,"name":"root"}]
[{"id":2,"name":"guest"},{"id":3,"name":"root"}]
[{"id":2,"name":"guest"},{"id":3,"name":"root"}]

特別注意上面的反序列化數組,有兩種不一樣的方式。性能

2.查看JSONObject的使用測試

這個JSONObject在不少包裏面都存在這個類,這裏說的是fastjson包裏面的使用

package com.qhong.fastjson;

//import com.alibaba.fastjson.JSONObject;


//import net.sf.json.JSONObject;

import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class OperatorJSON {
    public static void main(String[] args) {
        createJson();
        createJsonByMap();
        createJsonByJavaBean();
    }

    private static void createJson() {
        JSONObject obj = new JSONObject();
        obj.put("name", "John");
        obj.put("sex", "male");
        obj.put("age", 22);
        obj.put("is_student", true);
        obj.put("hobbies", new String[] {"hiking", "swimming"});
        //調用toString()方法可直接將其內容打印出來
        System.out.println(obj.toString());
    }

    private static void createJsonByMap() {
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("name", "John");
        data.put("sex", "male");
        data.put("age", 22);
        data.put("is_student", true);
        data.put("hobbies", new String[] {"hiking", "swimming"});

        JSONObject obj = new JSONObject(data);
        System.out.println(obj.toString());
    }

    private static void createJsonByJavaBean() {
        PersonInfo info = new PersonInfo();
        info.setName("John");
        info.setSex("male");
        info.setAge(22);
        info.setStudent(true);
        info.setHobbies(new String[] {"hiking", "swimming"});

        String text= JSONObject.toJSONString(info);
        System.out.println(text);
//        JSONObject obj = JSONObject.toJSON(info);
//        System.out.println(obj);
    }

}

class PersonInfo {

    private String name;
    private String sex;
    private int age;
    private boolean isStudent;
    private String[] hobbies;

    public void setName(String name) {
        this.name = name;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setStudent(boolean isStudent) {
        this.isStudent = isStudent;
    }
    public void setHobbies(String[] hobbies) {
        this.hobbies = hobbies;
    }
    //getter不能少
    public String getName() {
        return name;
    }
    public String getSex() {
        return sex;
    }
    public int getAge() {
        return age;
    }
    public boolean isStudent() {
        return isStudent;
    }
    public String[] getHobbies() {
        return hobbies;
    }
}

output:

{"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
{"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
{"age":22,"hobbies":["hiking","swimming"],"name":"John","sex":"male","student":true}

Process finished with exit code 0

能夠從註釋的區域看出,這個是fastjson包裏面的,若是切換到net.sf.json包裏面,那麼就會報錯!

 

http://blog.csdn.net/glarystar/article/details/6654494

相關文章
相關標籤/搜索