關(guān)于JSON.toJSONString()和Gson.toJson()方法的比較
使用
兩個(gè)方法都是將Java對象轉(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字段會覆蓋Person類中的name字段。
當(dāng)使用Student實(shí)體類的對象使用Gson.toJson()方法時(shí),會報(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);上面的代碼會報(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()方法會默認(rèn)轉(zhuǎn)換子類中的屬性值,所以不會出現(xiàn)報(bào)錯(cuò)。
個(gè)人建議JSON相關(guān)的處理使用阿里的JSON類!?。?/p>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java解析pdf格式發(fā)票的代碼實(shí)現(xiàn)
為了減少用戶工作量及誤操作的可能性,需要實(shí)現(xiàn)用戶上傳PDF格式的發(fā)票,系統(tǒng)通過解析PDF文件獲取發(fā)票內(nèi)容,并直接將其寫入表單,以下文章記錄了功能實(shí)現(xiàn)的代碼,需要的朋友可以參考下2024-08-08
關(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é),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
一起來學(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)境搭建圖文教程
這篇文章主要為大家詳細(xì)介紹了mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程,感興趣的小伙伴們可以參考一下2016-06-06
java 中Excel轉(zhuǎn)shape file的實(shí)例詳解
這篇文章主要介紹了java 中Excel轉(zhuǎn)shape file的實(shí)例詳解的相關(guān)資料,希望通過本文大家能實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09

