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

關(guān)于JSON.toJSONString()和Gson.toJson()方法的比較

 更新時(shí)間:2024年11月11日 10:11:22   作者:有點(diǎn)野的程序猿  
本文介紹了兩種將Java對(duì)象轉(zhuǎn)換為JSON字符串的方法:阿里的`JSON.toJSONString()`和谷歌的`Gson.toJson()`,通過一個(gè)示例,展示了當(dāng)使用繼承關(guān)系且子類覆蓋父類字段時(shí),`Gson`會(huì)報(bào)錯(cuò),而`JSON`可以正常運(yùn)行,作者建議在處理JSON相關(guān)操作時(shí)使用阿里的`JSON`類

使用

兩個(gè)方法都是將Java對(duì)象轉(zhuǎn)化為JSON字符串格式

不同點(diǎn)是JSON.toJSONString()是阿里的com.alibaba.fastjson包中的方法

Gson.toJson()是谷歌的com.google.gson包中的方法

踩過的坑

嫌啰嗦的小伙伴可以直接看分析!!

代碼是這樣的

public class Person{
	String name;
	String father;
	String mother;
}
public class Student extends Person{
	String name;
	Integer age;
}

兩個(gè)實(shí)體類,一個(gè)Person類,一個(gè)Student類繼承Person類,并且Student類中的name字段會(huì)覆蓋Person類中的name字段。

當(dāng)使用Student實(shí)體類的對(duì)象使用Gson.toJson()方法時(shí),會(huì)報(bào)錯(cuò),

報(bào)錯(cuò)內(nèi)容為:

java.lang.IllegalArgumentException: class Student declares multiple JSON fields named name

示例的代碼如下:

Student student = new Student();
student.setName("張三");
student.setAge(18);
Gson G = new Gson();
G.toJson(student);

上面的代碼會(huì)報(bào)錯(cuò),但是使用阿里的JSON類可以正常運(yùn)行,如下:

Student student = new Student();
student.setName("張三");
student.setAge(18);
JSON.toJSONString(Student);

分析

具體的原因是因?yàn)镾tudent繼承了Person類,并覆蓋了原有的name,在轉(zhuǎn)為JSON字符串的過程中,谷歌的Gson.toJson()方法無法區(qū)分是Person中的name還是Student中的name,所以出現(xiàn)了上面提到的報(bào)錯(cuò),但是阿里的JSON.toJSONString()方法會(huì)默認(rèn)轉(zhuǎn)換子類中的屬性值,所以不會(huì)出現(xiàn)報(bào)錯(cuò)。

個(gè)人建議JSON相關(guān)的處理使用阿里的JSON類?。?!

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java如何創(chuàng)建普通二叉樹

    java如何創(chuàng)建普通二叉樹

    這篇文章主要介紹了java如何創(chuàng)建普通二叉樹的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot整合Redisson的兩種方式

    SpringBoot整合Redisson的兩種方式

    這篇文章主要介紹了Spring Boot整合Redisson的兩種方式,方式一直接使用yml配置,方式二創(chuàng)建RedissonConfig配置類,文中通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-04-04
  • Java解析pdf格式發(fā)票的代碼實(shí)現(xiàn)

    Java解析pdf格式發(fā)票的代碼實(shí)現(xiàn)

    為了減少用戶工作量及誤操作的可能性,需要實(shí)現(xiàn)用戶上傳PDF格式的發(fā)票,系統(tǒng)通過解析PDF文件獲取發(fā)票內(nèi)容,并直接將其寫入表單,以下文章記錄了功能實(shí)現(xiàn)的代碼,需要的朋友可以參考下
    2024-08-08
  • spring boot整合kafka過程解析

    spring boot整合kafka過程解析

    這篇文章主要介紹了spring boot整合kafka過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 關(guān)于Android觸摸事件分發(fā)的原理詳析

    關(guān)于Android觸摸事件分發(fā)的原理詳析

    觸摸事件分發(fā)機(jī)制一直以來都是Android中比較重要的一大塊,自定義view,各種復(fù)雜的自定義手勢交互都與觸摸事件分發(fā)機(jī)制關(guān)系密,下面這篇文章主要給大家介紹了關(guān)于Android觸摸事件分發(fā)原理的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Spring實(shí)現(xiàn)IoC的多種方式小結(jié)

    Spring實(shí)現(xiàn)IoC的多種方式小結(jié)

    本篇文章主要介紹了Spring實(shí)現(xiàn)IoC的多種方式小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 一起來學(xué)習(xí)Java IO的轉(zhuǎn)化流

    一起來學(xué)習(xí)Java IO的轉(zhuǎn)化流

    這篇文章主要為大家詳細(xì)介紹了Java IO的轉(zhuǎn)化流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程

    mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程

    這篇文章主要為大家詳細(xì)介紹了mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java中的Apache?Commons?Math使用詳解

    Java中的Apache?Commons?Math使用詳解

    Java中的Apache?Commons?Math是一個(gè)開源的數(shù)學(xué)庫,它提供了許多常用的數(shù)學(xué)函數(shù)和算法,這個(gè)庫對(duì)于需要處理大量數(shù)據(jù)的開發(fā)者來說非常有用,因?yàn)樗梢源蟠蠛喕a并提高效率,本文給大家詳解講解Java中的Apache?Commons?Math知識(shí),感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • java  中Excel轉(zhuǎn)shape file的實(shí)例詳解

    java 中Excel轉(zhuǎn)shape file的實(shí)例詳解

    這篇文章主要介紹了java 中Excel轉(zhuǎn)shape file的實(shí)例詳解的相關(guān)資料,希望通過本文大家能實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

乐至县| 固始县| 休宁县| 泸西县| 湟中县| 瑞金市| 兴义市| 洪江市| 兴山县| 美姑县| 金川县| 沂源县| 杭锦后旗| 紫金县| 甘谷县| 林口县| 五台县| 白水县| 屏东市| 科技| 永胜县| 泰和县| 西乌| 巢湖市| 万州区| 和龙市| 泗水县| 丹阳市| 岑巩县| 三都| 绥阳县| 兰西县| 定安县| 通许县| 南雄市| 甘孜县| 临沧市| 西充县| 新津县| 三亚市| 轮台县|