欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java對(duì)象轉(zhuǎn)JSON三種常用的方法

 更新時(shí)間:2024年04月13日 14:50:22   作者:猿泰山  
在Java中可以使用多種方式將對(duì)象轉(zhuǎn)換為JSON字符串,下面這篇文章主要給大家介紹了關(guān)于Java對(duì)象轉(zhuǎn)JSON三種常用的方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在Java編程中,我們經(jīng)常需要將Java對(duì)象轉(zhuǎn)換為JSON格式,以便于數(shù)據(jù)的傳輸和存儲(chǔ)。本文將介紹三種常用的方法來(lái)實(shí)現(xiàn)Java對(duì)象到JSON的轉(zhuǎn)換,分別是使用org.json.JSONObjectGoogle GsonJackson。

一、使用org.json.JSONObject

雖然org.json.JSONObject通常用于解析JSON字符串,但它并不直接支持從Java對(duì)象轉(zhuǎn)換為JSON。因此,上面的代碼示例中使用JSONObject object = new JSONObject(student);這行代碼實(shí)際上是有誤的,它會(huì)導(dǎo)致編譯錯(cuò)誤。為了修正這個(gè)問(wèn)題,我們需要手動(dòng)構(gòu)建JSON對(duì)象,或者考慮使用其他庫(kù),如Gson或Jackson。

然而,為了本文的完整性,我們可以展示如何使用org.json手動(dòng)構(gòu)建JSON對(duì)象:

JSONObject object = new JSONObject();
object.put("id", student.getId());
object.put("name", student.getName());
object.put("age", student.getAge());
object.put("courses", new JSONArray(student.getCourses()));
String json = object.toString();
System.out.println(json);

二、使用Google Gson

Gson是Google提供的一個(gè)用于將Java對(duì)象轉(zhuǎn)換為JSON字符串的庫(kù),它非常流行且易于使用。要使用Gson,首先需要將Gson庫(kù)添加到項(xiàng)目的依賴中。然后,可以通過(guò)創(chuàng)建Gson對(duì)象并調(diào)用其toJson()方法將Java對(duì)象轉(zhuǎn)換為JSON字符串。

Gson gson = new Gson();
String json = gson.toJson(student);
System.out.println(json);

三、使用Jackson

Jackson是另一個(gè)廣泛使用的Java庫(kù),用于處理JSON數(shù)據(jù)。與Gson類似,Jackson也提供了簡(jiǎn)單的方法來(lái)將Java對(duì)象轉(zhuǎn)換為JSON字符串。要使用Jackson,需要添加Jackson庫(kù)到項(xiàng)目依賴中。然后,可以創(chuàng)建一個(gè)ObjectMapper對(duì)象,并調(diào)用其writeValueAsString()方法將Java對(duì)象轉(zhuǎn)換為JSON字符串。

ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(student);
System.out.println(jsonStr);

結(jié)論:

雖然上面的代碼示例中包含了一個(gè)小錯(cuò)誤(關(guān)于org.json.JSONObject的使用),但它仍然展示了在Java中將對(duì)象轉(zhuǎn)換為JSON的三種不同方法。在實(shí)際項(xiàng)目中,你可以根據(jù)自己的喜好和項(xiàng)目需求選擇適合的庫(kù)。Gson和Jackson都提供了強(qiáng)大的功能和靈活的配置選項(xiàng),使得處理JSON數(shù)據(jù)變得簡(jiǎn)單而高效。

附:java對(duì)象轉(zhuǎn)json,數(shù)字精確出現(xiàn)丟失問(wèn)題

這兩個(gè)問(wèn)題都不是json工具包(比如Gson)的問(wèn)題,而是由于js存儲(chǔ)大數(shù)字丟失精度引起。

1、精度丟失例子:當(dāng)js表達(dá)整數(shù)時(shí),最多表達(dá)15位數(shù)字,如果超過(guò)15位就會(huì)出現(xiàn)精度丟失問(wèn)題。

援引js文檔:

精度

整數(shù)(不使用小數(shù)點(diǎn)或指數(shù)計(jì)數(shù)法)最多為 15 位。

最后幾位都變?yōu)?,丟失精度

var x = 1234567890123456999;
console.log(x);

輸出結(jié)果:1234567890123457000

2、數(shù)字再大一些就會(huì)出現(xiàn),科學(xué)計(jì)數(shù)法

var x = 123456789012345699999999;
console.log(x);

輸出結(jié)果:1.234567890123457e+23

解決辦法

后臺(tái)屬性由數(shù)字類型改為字符串,轉(zhuǎn)為json,傳到前臺(tái)就不會(huì)丟失了。

到此這篇關(guān)于Java對(duì)象轉(zhuǎn)JSON三種常用的方法的文章就介紹到這了,更多相關(guān)Java對(duì)象轉(zhuǎn)JSON內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 的雙重分發(fā)與 Visitor 模式實(shí)例詳解

    Java 的雙重分發(fā)與 Visitor 模式實(shí)例詳解

    這篇文章主要介紹了Java 的雙重分發(fā)與 Visitor 模式實(shí)例詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • SpringBoot中快速實(shí)現(xiàn)郵箱發(fā)送代碼解析

    SpringBoot中快速實(shí)現(xiàn)郵箱發(fā)送代碼解析

    這篇文章主要介紹了SpringBoot中快速實(shí)現(xiàn)郵箱發(fā)送代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • lombok中@Data使用常見(jiàn)的小坑及解決

    lombok中@Data使用常見(jiàn)的小坑及解決

    在Java中使用Lombok庫(kù)的@Data注解時(shí),布爾類型屬性可能導(dǎo)致生成的get方法不符合預(yù)期,對(duì)于非is開(kāi)頭的布爾屬性,Lombok生成的方法會(huì)添加is前綴,導(dǎo)致原本期待的get方法不存在,例如,對(duì)于屬性private boolean active,Lombok會(huì)生成方法名為isActive而不是getActive
    2024-10-10
  • JavaWeb實(shí)現(xiàn)用戶登錄注冊(cè)功能實(shí)例代碼(基于Servlet+JSP+JavaBean模式)

    JavaWeb實(shí)現(xiàn)用戶登錄注冊(cè)功能實(shí)例代碼(基于Servlet+JSP+JavaBean模式)

    這篇文章主要基于Servlet+JSP+JavaBean開(kāi)發(fā)模式實(shí)現(xiàn)JavaWeb用戶登錄注冊(cè)功能實(shí)例代碼,非常實(shí)用,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-05-05
  • SpringBoot集成企業(yè)微信開(kāi)發(fā)的實(shí)現(xiàn)

    SpringBoot集成企業(yè)微信開(kāi)發(fā)的實(shí)現(xiàn)

    本文將詳細(xì)介紹如何使用?Spring?Boot?集成企業(yè)微信開(kāi)發(fā),通過(guò)企業(yè)微信?API?可以實(shí)現(xiàn)企業(yè)內(nèi)部的一些自動(dòng)化業(yè)務(wù)流程,提高工作效率,感興趣的可以了解一下
    2023-07-07
  • 如何解決mybatis查詢結(jié)果接收不同的問(wèn)題

    如何解決mybatis查詢結(jié)果接收不同的問(wèn)題

    這篇文章主要介紹了如何解決mybatis查詢結(jié)果接收不同的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java應(yīng)用程序開(kāi)發(fā)學(xué)習(xí)之static關(guān)鍵字應(yīng)用

    Java應(yīng)用程序開(kāi)發(fā)學(xué)習(xí)之static關(guān)鍵字應(yīng)用

    今天小編就為大家分享一篇關(guān)于Java應(yīng)用程序開(kāi)發(fā)學(xué)習(xí)之static關(guān)鍵字應(yīng)用,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • 使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)

    使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)

    下面小編就為大家?guī)?lái)一篇使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略

    淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略

    這篇文章主要介紹了淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 淺談單例模式和線程安全問(wèn)題

    淺談單例模式和線程安全問(wèn)題

    這篇文章主要介紹了淺談單例模式和線程安全問(wèn)題,再某些特殊的情況下,存在一個(gè)類僅能用來(lái)產(chǎn)生一個(gè)唯一對(duì)象的必要性,因此需要單例模式,需要的朋友可以參考下
    2023-04-04

最新評(píng)論