最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java FastJson的簡(jiǎn)單用法

 更新時(shí)間:2021年09月09日 17:11:35   作者:夢(mèng)里夢(mèng)外  
FastJson是阿里的開(kāi)源JSON解析庫(kù),可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean,這里我介紹一下FastJson的使用,感興趣的朋友一起看看吧

1.前言

1.1.FastJson的介紹:

  JSON(javaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式。主要采用鍵值對(duì)({"name": "json"})的方式來(lái)保存和表示數(shù)據(jù)。JSONJS對(duì)象的字符串表示法,它使用文本表示一個(gè)JS對(duì)象的信息,本質(zhì)上是一個(gè)字符串。

  JSON的處理器有很多,這里我介紹一下FastJson,FastJson是阿里的開(kāi)源JSON解析庫(kù),可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean。是一個(gè)極其優(yōu)秀的Json框架,Github地址:FastJson

1.2.FastJson的特點(diǎn):

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

1.3.FastJson的簡(jiǎn)單說(shuō)明:

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

2.FastJson的用法

首先定義三個(gè)json格式的字符串

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

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

//復(fù)雜格式j(luò)son字符串
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}]}";

2.1.JSON格式字符串與JSON對(duì)象之間的轉(zhuǎn)換

2.1.1.json字符串-簡(jiǎn)單對(duì)象型與JSONObject之間的轉(zhuǎn)換

/**
 * json字符串-簡(jiǎn)單對(duì)象型到JSONObject的轉(zhuǎn)換
 */
@Test
public void testJSONStrToJSONObject() {

    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);

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

}

/**
 * JSONObject到j(luò)son字符串-簡(jiǎn)單對(duì)象型的轉(zhuǎn)換
 */
@Test
public void testJSONObjectToJSONStr() {

    //已知JSONObject,目標(biāo)要轉(zhuǎn)換為json字符串
    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);
    // 第一種方式
    String jsonString = JSONObject.toJSONString(jsonObject);

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

2.1.3.復(fù)雜json格式字符串與JSONObject之間的轉(zhuǎn)換

/**
 * 復(fù)雜json格式字符串到JSONObject的轉(zhuǎn)換
 */
@Test
public 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);
    }
}

/**
 * 復(fù)雜JSONObject到j(luò)son格式字符串的轉(zhuǎn)換
 */
@Test
public void testJSONObjectToComplexJSONStr() {

   //復(fù)雜JSONObject,目標(biāo)要轉(zhuǎn)換為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之間的轉(zhuǎn)換

2.2.1.json字符串-簡(jiǎn)單對(duì)象型與javaBean之間的轉(zhuǎn)換

/**
 * json字符串-簡(jiǎn)單對(duì)象到JavaBean之間的轉(zhuǎn)換
 */
@Test
public 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>類(lèi),由于其構(gòu)造方法使用protected進(jìn)行修飾,故創(chuàng)建其子類(lèi)
    //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到j(luò)son字符串-簡(jiǎn)單對(duì)象的轉(zhuǎn)換
 */
@Test
public void testJavaBeanObjToJSONStr() {

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

2.3.javaBean與json對(duì)象間的之間的轉(zhuǎn)換

2.3.1.簡(jiǎn)單javaBean與json對(duì)象之間的轉(zhuǎn)換

/**
 * 簡(jiǎn)單JavaBean_obj到j(luò)son對(duì)象的轉(zhuǎn)換
 */
@Test
public void testJavaBeanToJSONObject(){

    //已知簡(jiǎn)單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);
}

/**
 * 簡(jiǎn)單json對(duì)象到JavaBean_obj的轉(zhuǎn)換
 */
@Test
public void testJSONObjectToJavaBean(){

    //已知簡(jiǎn)單json對(duì)象
    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);

    //第一種方式,使用TypeReference<T>類(lèi),由于其構(gòu)造方法使用protected進(jìn)行修飾,故創(chuàng)建其子類(lèi)
    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之間的轉(zhuǎn)換

/**
 * JavaList到JsonArray的轉(zhuǎn)換
 */
@Test
public 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的轉(zhuǎn)換
 */
@Test
public void testJsonArrayToJavaList() {

    //已知JsonArray
    JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);

    //第一種方式,使用TypeReference<T>類(lèi),由于其構(gòu)造方法使用protected進(jìn)行修飾,故創(chuàng)建其子類(lèi)
    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.復(fù)雜JavaBean_obj與json對(duì)象之間的轉(zhuǎn)換

/**
 * 復(fù)雜JavaBean_obj到j(luò)son對(duì)象的轉(zhuǎn)換
 */
@Test
public void testComplexJavaBeanToJSONObject() {

    //已知復(fù)雜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);

}

/**
 * 復(fù)雜json對(duì)象到JavaBean_obj的轉(zhuǎn)換
 */
@Test
public void testComplexJSONObjectToJavaBean() {

    //已知復(fù)雜json對(duì)象
    JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);

    //第一種方式,使用TypeReference<T>類(lèi),由于其構(gòu)造方法使用protected進(jìn)行修飾,故創(chuàng)建其子類(lèi)
    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);
}

總結(jié)

// 把JSON文本parse為JSONObject或者JSONArray
        public static final Object parse(String text); 
        
        // 把JSON文本parse成JSONObject
        public static final JSONObject parseObject(String text);
        
        // 把JSON文本parse為JavaBean
        public static final <T> T parseObject(String text, Class<T> clazz); 
        
        // 把JSON文本parse成JSONArray
        public static final JSONArray parseArray(String text); 
        
        //把JSON文本parse成JavaBean集合
        public static final <T> List<T> parseArray(String text, Class<T> clazz); 
        
        // 將JavaBean序列化為JSON文本
        public static final String toJSONString(Object object); 
        
        // 將JavaBean序列化為帶格式的JSON文本
        public static final String toJSONString(Object object, boolean prettyFormat); 
        
        //將JavaBean轉(zhuǎn)換為JSONObject或者JSONArray。
        public static final Object toJSON(Object javaObject);

參考

https://segmentfault.com/a/1190000011212806

https://www.cnblogs.com/miracle-luna/p/11143702.html

https://github.com/alibaba/fastjson

到此這篇關(guān)于java FastJson的簡(jiǎn)單用法的文章就介紹到這了,更多相關(guān)java FastJson使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建詳細(xì)步驟

    Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建詳細(xì)步驟

    Jenkins是一個(gè)開(kāi)源的自動(dòng)化服務(wù)器,可以用來(lái)輕松地建立持續(xù)集成和持續(xù)交付(CI/CD)管道,這篇文章主要給大家介紹了關(guān)于Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • MyBatis自定義typeHandler的完整實(shí)例

    MyBatis自定義typeHandler的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于MyBatis自定義typeHandler的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MyBatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):循環(huán)鏈表和棧

    java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):循環(huán)鏈表和棧

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表、棧的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Java數(shù)據(jù)結(jié)構(gòu)中循環(huán)鏈表、棧、的功能、定義及使用方法,需要的朋友可以參考下
    2021-08-08
  • java程序員常見(jiàn)的sql錯(cuò)誤

    java程序員常見(jiàn)的sql錯(cuò)誤

    當(dāng)Java程序員在SQL中要寫(xiě)個(gè)查詢(xún)語(yǔ)句是很簡(jiǎn)單的。但在Java里類(lèi)似的語(yǔ)句卻不容易,因?yàn)槌绦騿T不僅要反復(fù)考慮編程范式,而且也要考慮算法的問(wèn)題。下面我們來(lái)看看這幾個(gè)常見(jiàn)的錯(cuò)誤吧
    2019-06-06
  • 對(duì)dbunit進(jìn)行mybatis DAO層Excel單元測(cè)試(必看篇)

    對(duì)dbunit進(jìn)行mybatis DAO層Excel單元測(cè)試(必看篇)

    下面小編就為大家?guī)?lái)一篇對(duì)dbunit進(jìn)行mybatis DAO層Excel單元測(cè)試(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java實(shí)現(xiàn)利用圖片或視頻生成GIF并發(fā)送微信

    Java實(shí)現(xiàn)利用圖片或視頻生成GIF并發(fā)送微信

    這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言如何利用圖片或視頻實(shí)現(xiàn)生成GIF并發(fā)送微信的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-11-11
  • 解決表單post,get到springMVC后臺(tái)亂碼的問(wèn)題

    解決表單post,get到springMVC后臺(tái)亂碼的問(wèn)題

    下面小編就為大家分享一篇解決表單post,get到springMVC后臺(tái)亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Java通過(guò)經(jīng)緯度坐標(biāo)獲取兩個(gè)點(diǎn)之間的直線距離的示例

    Java通過(guò)經(jīng)緯度坐標(biāo)獲取兩個(gè)點(diǎn)之間的直線距離的示例

    這篇文章主要介紹了Java通過(guò)經(jīng)緯度坐標(biāo)獲取兩個(gè)點(diǎn)之間的直線距離的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • mybatis如何處理返回結(jié)果集

    mybatis如何處理返回結(jié)果集

    這篇文章主要介紹了mybatis如何處理返回結(jié)果集問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java導(dǎo)出dbf文件生僻漢字處理方式

    java導(dǎo)出dbf文件生僻漢字處理方式

    這篇文章主要介紹了java導(dǎo)出dbf文件生僻漢字處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

芜湖市| 界首市| 奉化市| 大关县| 若羌县| 台安县| 临江市| 汶上县| 宣城市| 武平县| 长宁区| 武强县| 辛集市| 阿荣旗| 轮台县| 眉山市| 文登市| 额尔古纳市| 九寨沟县| 略阳县| 弥勒县| 留坝县| 驻马店市| 惠东县| 周至县| 武夷山市| 辽宁省| 石门县| 美姑县| 阿尔山市| 镇坪县| 青岛市| 临夏县| 蓬莱市| 德保县| 耿马| 昌都县| 报价| 衢州市| 武山县| 芮城县|