五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網 > 365文章 > JSON框架之FastJson的用法和實例

JSON框架之FastJson的用法和實例

文章來源:365jz.com     點擊數(shù):578    更新時間:2018-06-09 09:15   參與評論

1.1.FastJson的介紹:

JSON協(xié)議使用方便,越來越流行,JSON的處理器有很多,這里我介紹一下FastJson,FastJson是阿里的開源框架,被不少企業(yè)使用,是一個極其優(yōu)秀的Json框架,Github地址: FastJson

1.2.FastJson的特點:

1.FastJson數(shù)度快,無論序列化和反序列化,都是當之無愧的fast 
2.功能強大(支持普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum) 
3.零依賴(沒有依賴其它任何類庫)

1.3.FastJson的簡單說明:

FastJson對于json格式字符串的解析主要用到了下面三個類: 
1.JSON:fastJson的解析器,用于JSON格式字符串與JSON對象及javaBean之間的轉換 
2.JSONObject:fastJson提供的json對象 
3.JSONArray:fastJson提供json數(shù)組對象

還在迷茫和彷徨嗎,快上車,老司機帶你飛!

2.FastJson的用法

首先定義三個json格式的字符串

//json字符串-簡單對象型
private static final String  JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";

//json字符串-數(shù)組類型
private static final String  JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";

//復雜格式json字符串
private static final String  COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";

fastJson對于json格式字符串的解析主要用到了一下三個類:

JSON:fastJson的解析器,用于JSON格式字符串與JSON對象及javaBean之間的轉換。

JSONObject:fastJson提供的json對象。

JSONArray:fastJson提供json數(shù)組對象。

我們可以把JSONObject當成一個Map<String,Object>來看,只是JSONObject提供了更為豐富便捷的方法,方便我們對于對象屬性的操作。我們看一下源碼。

同樣我們可以把JSONArray當做一個List<Object>,可以把JSONArray看成JSONObject對象的一個集合。

此外,由于JSONObject和JSONArray繼承了JSON,所以說也可以直接使用兩者對JSON格式字符串與JSON對象及javaBean之間做轉換,不過為了避免混淆我們還是使用JSON。

2.1.JSON格式字符串與JSON對象之間的轉換

2.1.1.json字符串-簡單對象型與JSONObject之間的轉換

/**
 * json字符串-簡單對象型到JSONObject的轉換
 */@Testpublic void testJSONStrToJSONObject() {

    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);

    System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "
            + jsonObject.getInteger("studentAge"));

}/**
 * JSONObject到json字符串-簡單對象型的轉換
 */@Testpublic void testJSONObjectToJSONStr() {    //已知JSONObject,目標要轉換為json字符串
    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);    // 第一種方式
    String jsonString = JSONObject.toJSONString(jsonObject);    // 第二種方式
    //String jsonString = jsonObject.toJSONString();
    System.out.println(jsonString);
}

2.1.2.json字符串(數(shù)組類型)與JSONArray之間的轉換

/**
 * json字符串-數(shù)組類型到JSONArray的轉換
 */@Testpublic void testJSONStrToJSONArray() {

    JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);    //遍歷方式1
    int size = jsonArray.size();    for (int i = 0; i < size; i++) {

        JSONObject jsonObject = jsonArray.getJSONObject(i);
        System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "
                + jsonObject.getInteger("studentAge"));
    }    //遍歷方式2
    for (Object obj : jsonArray) {

        JSONObject jsonObject = (JSONObject) obj;
        System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "
                + jsonObject.getInteger("studentAge"));
    }
}/**
 * JSONArray到json字符串-數(shù)組類型的轉換
 */@Testpublic void testJSONArrayToJSONStr() {    //已知JSONArray,目標要轉換為json字符串
    JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);    //第一種方式
    String jsonString = JSONArray.toJSONString(jsonArray);    // 第二種方式
    //String jsonString = jsonArray.toJSONString(jsonArray);
    System.out.println(jsonString);
}

2.1.3.復雜json格式字符串與JSONObject之間的轉換

/**
 * 復雜json格式字符串到JSONObject的轉換
 */@Testpublic void testComplexJSONStrToJSONObject() {

    JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);

    String teacherName = jsonObject.getString("teacherName");
    Integer teacherAge = jsonObject.getInteger("teacherAge");

    System.out.println("teacherName:  " + teacherName + "   teacherAge:  " + teacherAge);

    JSONObject jsonObjectcourse = jsonObject.getJSONObject("course");     //獲取JSONObject中的數(shù)據(jù)
    String courseName = jsonObjectcourse.getString("courseName");
    Integer code = jsonObjectcourse.getInteger("code");

    System.out.println("courseName:  " + courseName + "   code:  " + code);

    JSONArray jsonArraystudents = jsonObject.getJSONArray("students");    //遍歷JSONArray
    for (Object object : jsonArraystudents) {

        JSONObject jsonObjectone = (JSONObject) object;
        String studentName = jsonObjectone.getString("studentName");
        Integer studentAge = jsonObjectone.getInteger("studentAge");

        System.out.println("studentName:  " + studentName + "   studentAge:  " + studentAge);
    }
}/**
 * 復雜JSONObject到json格式字符串的轉換
 */@Testpublic void testJSONObjectToComplexJSONStr() {   //復雜JSONObject,目標要轉換為json字符串
    JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);    //第一種方式
    //String jsonString = JSONObject.toJSONString(jsonObject);

    //第二種方式
    String jsonString = jsonObject.toJSONString();
    System.out.println(jsonString);

}

2.2.JSON格式字符串與javaBean之間的轉換

2.2.1.json字符串-簡單對象型與javaBean之間的轉換

/**
 * json字符串-簡單對象到JavaBean之間的轉換
 */@Testpublic void testJSONStrToJavaBeanObj() {    //第一種方式
    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);

    String studentName = jsonObject.getString("studentName");
    Integer studentAge = jsonObject.getInteger("studentAge");    //Student student = new Student(studentName, studentAge);

    //第二種方式,使用TypeReference<T>類,由于其構造方法使用protected進行修飾,故創(chuàng)建其子類
    //Student student = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});

    //第三種方式,使用Gson的思想
    Student student = JSONObject.parseObject(JSON_OBJ_STR, Student.class);

    System.out.println(student);
}/**
 * JavaBean到json字符串-簡單對象的轉換
 */@Testpublic void testJavaBeanObjToJSONStr() {

    Student student = new Student("lily", 12);
    String jsonString = JSONObject.toJSONString(student);
    System.out.println(jsonString);
}

2.2.2.json字符串-數(shù)組類型與javaBean之間的轉換

/**
 * json字符串-數(shù)組類型到JavaBean_List的轉換
 */@Testpublic void testJSONStrToJavaBeanList() {    //第一種方式
    JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);    //遍歷JSONArray
    List<Student> students = new ArrayList<Student>();
    Student student = null;    for (Object object : jsonArray) {

        JSONObject jsonObjectone = (JSONObject) object;
        String studentName = jsonObjectone.getString("studentName");
        Integer studentAge = jsonObjectone.getInteger("studentAge");

        student = new Student(studentName,studentAge);
        students.add(student);
    }

    System.out.println("students:  " + students);    //第二種方式,使用TypeReference<T>類,由于其構造方法使用protected進行修飾,故創(chuàng)建其子類
    List<Student> studentList = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
    System.out.println("studentList:  " + studentList);    //第三種方式,使用Gson的思想
    List<Student> studentList1 = JSONArray.parseArray(JSON_ARRAY_STR, Student.class);
    System.out.println("studentList1:  " + studentList1);

}/**
 * JavaBean_List到json字符串-數(shù)組類型的轉換
 */@Testpublic void testJavaBeanListToJSONStr() {

    Student student = new Student("lily", 12);
    Student studenttwo = new Student("lucy", 15);

    List<Student> students = new ArrayList<Student>();
    students.add(student);
    students.add(studenttwo);

    String jsonString = JSONArray.toJSONString(students);
    System.out.println(jsonString);

}

2.2.3.復雜json格式字符串與與javaBean之間的轉換

/**
 * 復雜json格式字符串到JavaBean_obj的轉換
 */@Testpublic void testComplexJSONStrToJavaBean(){    //第一種方式,使用TypeReference<T>類,由于其構造方法使用protected進行修飾,故創(chuàng)建其子類
    Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});
    System.out.println(teacher);    //第二種方式,使用Gson思想
    Teacher teacher1 = JSONObject.parseObject(COMPLEX_JSON_STR, Teacher.class);
    System.out.println(teacher1);
}/**
 * 復雜JavaBean_obj到json格式字符串的轉換
 */@Testpublic void testJavaBeanToComplexJSONStr(){    //已知復雜JavaBean_obj
    Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});
    String jsonString = JSONObject.toJSONString(teacher);
    System.out.println(jsonString);
}

2.3.javaBean與json對象間的之間的轉換

2.3.1.簡單javaBean與json對象之間的轉換

/**
 * 簡單JavaBean_obj到json對象的轉換
 */@Testpublic void testJavaBeanToJSONObject(){    //已知簡單JavaBean_obj
    Student student = new Student("lily", 12);    //方式一
    String jsonString = JSONObject.toJSONString(student);
    JSONObject jsonObject = JSONObject.parseObject(jsonString);
    System.out.println(jsonObject);    //方式二
    JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(student);
    System.out.println(jsonObject1);
}/**
 * 簡單json對象到JavaBean_obj的轉換
 */@Testpublic void testJSONObjectToJavaBean(){    //已知簡單json對象
    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);    //第一種方式,使用TypeReference<T>類,由于其構造方法使用protected進行修飾,故創(chuàng)建其子類
    Student student = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Student>() {});
    System.out.println(student);    //第二種方式,使用Gson的思想
    Student student1 = JSONObject.parseObject(jsonObject.toJSONString(), Student.class);
    System.out.println(student1);
}

2.3.2.JavaList與JsonArray之間的轉換

/**
 * JavaList到JsonArray的轉換
 */@Testpublic void testJavaListToJsonArray() {    //已知JavaList
    Student student = new Student("lily", 12);
    Student studenttwo = new Student("lucy", 15);

    List<Student> students = new ArrayList<Student>();
    students.add(student);
    students.add(studenttwo);    //方式一
    String jsonString = JSONArray.toJSONString(students);
    JSONArray jsonArray = JSONArray.parseArray(jsonString);
    System.out.println(jsonArray);    //方式二
    JSONArray jsonArray1 = (JSONArray) JSONArray.toJSON(students);
    System.out.println(jsonArray1);
}/**
 * JsonArray到JavaList的轉換
 */@Testpublic void testJsonArrayToJavaList() {    //已知JsonArray
    JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);    //第一種方式,使用TypeReference<T>類,由于其構造方法使用protected進行修飾,故創(chuàng)建其子類
    ArrayList<Student> students = JSONArray.parseObject(jsonArray.toJSONString(),            new TypeReference<ArrayList<Student>>() {});

    System.out.println(students);    //第二種方式,使用Gson的思想
    List<Student> students1 = JSONArray.parseArray(jsonArray.toJSONString(), Student.class);
    System.out.println(students1);
}

2.3.3.復雜JavaBean_obj與json對象之間的轉換

/**
 * 復雜JavaBean_obj到json對象的轉換
 */@Testpublic void testComplexJavaBeanToJSONObject() {    //已知復雜JavaBean_obj
    Student student = new Student("lily", 12);
    Student studenttwo = new Student("lucy", 15);

    List<Student> students = new ArrayList<Student>();
    students.add(student);
    students.add(studenttwo);
    Course course = new Course("english", 1270);

    Teacher teacher = new Teacher("crystall", 27, course, students);    //方式一
    String jsonString = JSONObject.toJSONString(teacher);
    JSONObject jsonObject = JSONObject.parseObject(jsonString);
    System.out.println(jsonObject);    //方式二
    JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(teacher);
    System.out.println(jsonObject1);

}/**
 * 復雜json對象到JavaBean_obj的轉換
 */@Testpublic void testComplexJSONObjectToJavaBean() {    //已知復雜json對象
    JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);    //第一種方式,使用TypeReference<T>類,由于其構造方法使用protected進行修飾,故創(chuàng)建其子類
    Teacher teacher = JSONObject.parseObject(jsonObject.toJSONString(), new TypeReference<Teacher>() {});
    System.out.println(teacher);    //第二種方式,使用Gson的思想
    Teacher teacher1 = JSONObject.parseObject(jsonObject.toJSONString(), Teacher.class);
    System.out.println(teacher1);
}

此外的:

1,對于JSON對象與JSON格式字符串的轉換可以直接用 toJSONString()這個方法。

2,javaBean與JSON格式字符串之間的轉換要用到:JSON.toJSONString(obj);

3,javaBean與json對象間的轉換使用:JSON.toJSON(obj),然后使用強制類型轉換,JSONObject或者JSONArray。

另一實例:

package junit.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
/*
 * 這里將json的轉化和解析都放在一起了,大家可以根據(jù)實際需要來轉化json字符串和解析json字符串
 */
public class TestFastJson {
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();
}
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轉化示例結束----------");
}
static void method2(){
System.out.println("List<javabean>轉化示例開始----------");
Person person1 = new Person("1","fastjson1",1);
Person person2 = new Person("2","fastjson2",2);
List<Person> persons = new ArrayList<Person>();
persons.add(person1);
persons.add(person2);
String jsonString = JSON.toJSONString(persons);
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>轉化示例結束----------");
}
static void method3(){
System.out.println("List<String>轉化示例開始----------");
List<String> list = new ArrayList<String>();
list.add("fastjson1");
list.add("fastjson2");
list.add("fastjson3");
String jsonString = JSON.toJSONString(list);
System.out.println("json字符串:"+jsonString);
//解析json字符串
List<String> list2 = JSON.parseObject(jsonString,new TypeReference<List<String>>(){}); 
System.out.println(list2.get(0)+"::"+list2.get(1)+"::"+list2.get(2));
System.out.println("List<String>轉化示例結束----------");
}
static void method4(){
System.out.println(" List<Map<String,Object>>轉化示例開始 ----------");
Map<String,Object> map = new HashMap<String,Object>();
map.put("key1", "value1");
map.put("key2", "value2");
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("key1", 1);
map2.put("key2", 2);
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
list.add(map);
list.add(map2);
String jsonString = JSON.toJSONString(list);
System.out.println("json字符串:"+jsonString);
//解析json字符串
List<Map<String,Object>> list2 = JSON.parseObject(jsonString,new TypeReference<List<Map<String,Object>>>(){});
System.out.println("map的key1值"+list2.get(0).get("key1"));
System.out.println("map的key2值"+list2.get(0).get("key2"));
System.out.println("ma2p的key1值"+list2.get(1).get("key1"));
System.out.println("map2的key2值"+list2.get(1).get("key2"));
}
}


如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網友會為你解答!! 點擊進入論壇

發(fā)表評論 (578人查看,0條評論)
請自覺遵守互聯(lián)網相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務咨詢

· 技術支持
· 服務時間:9:00-18:00
365建站網二維碼

Powered by 365建站網 RSS地圖 HTML地圖

copyright © 2013-2024 版權所有 鄂ICP備17013400號