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

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

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

前言

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

一、使用org.json.JSONObject

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

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

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提供的一個用于將Java對象轉(zhuǎn)換為JSON字符串的庫,它非常流行且易于使用。要使用Gson,首先需要將Gson庫添加到項目的依賴中。然后,可以通過創(chuàng)建Gson對象并調(diào)用其toJson()方法將Java對象轉(zhuǎn)換為JSON字符串。

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

三、使用Jackson

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

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

結(jié)論:

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

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

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

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

援引js文檔:

精度

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

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

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

輸出結(jié)果:1234567890123457000

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

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

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

解決辦法

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

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

相關(guān)文章

  • SpringBoot環(huán)境搭建圖文教程

    SpringBoot環(huán)境搭建圖文教程

    這篇文章主要為大家詳細(xì)介紹了SpringBoot環(huán)境搭建圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java中的排序與內(nèi)部比較器Compareable解析

    Java中的排序與內(nèi)部比較器Compareable解析

    這篇文章主要介紹了Java中的排序與內(nèi)部比較器Compareable解析,一般沒有特殊要求時,直接調(diào)用(底層默認(rèn)的升序排列)就可以得到想要的結(jié)果,所謂的 sort 方法排序底層都是基于這兩種排序,故如果需要設(shè)計成所想要的排序就需要了解底層排序原理,需要的朋友可以參考下
    2023-11-11
  • Spring中@RequestMapping、@PostMapping、@GetMapping的實現(xiàn)

    Spring中@RequestMapping、@PostMapping、@GetMapping的實現(xiàn)

    RequestMapping、@PostMapping和@GetMapping是三個非常常用的注解,本文就來介紹一下這三種注解的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • Spring Security+JWT實現(xiàn)認(rèn)證與授權(quán)的實現(xiàn)

    Spring Security+JWT實現(xiàn)認(rèn)證與授權(quán)的實現(xiàn)

    本文主要介紹了Spring Security+JWT實現(xiàn)認(rèn)證與授權(quán)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java 反射類型Type的用法說明

    Java 反射類型Type的用法說明

    這篇文章主要介紹了Java 反射類型Type的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 詳解spring開發(fā)_JDBC操作MySQL數(shù)據(jù)庫

    詳解spring開發(fā)_JDBC操作MySQL數(shù)據(jù)庫

    本篇文章主要介紹了spring開發(fā)_JDBC操作MySQL數(shù)據(jù)庫,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • Java如何獲取文件夾下所有壓縮包下指定文件

    Java如何獲取文件夾下所有壓縮包下指定文件

    在Java中,通過遍歷文件夾并對壓縮包進(jìn)行解析,可以實現(xiàn)提取指定文件的功能,如文檔、PDF等,該過程中可增加過濾條件來適應(yīng)不同需求,例如文件類型或文件名過濾,該方法適用于處理大量數(shù)據(jù)時的文件管理和數(shù)據(jù)提取
    2024-09-09
  • Java中OGNL表達(dá)式語言的使用詳解

    Java中OGNL表達(dá)式語言的使用詳解

    本文介紹了OGNL(ObjectGraphNavigationLanguage)表達(dá)式語言,這是一種用于Java語言的對象圖導(dǎo)航和操作的表達(dá)式語言,它支持訪問對象屬性、調(diào)用對象方法、執(zhí)行算術(shù)和邏輯運(yùn)算,以及處理集合和數(shù)組等操作,OGNL的語法簡潔明了
    2024-12-12
  • Spring之ShutDown?Hook死鎖現(xiàn)象解讀

    Spring之ShutDown?Hook死鎖現(xiàn)象解讀

    這篇文章主要介紹了Spring之ShutDown?Hook死鎖現(xiàn)象解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 淺談Java的Synchronized鎖原理和優(yōu)化

    淺談Java的Synchronized鎖原理和優(yōu)化

    這篇文章主要介紹了Java的Synchronized鎖原理和優(yōu)化,synchronized的作用是保證在同一時刻, 被修飾的代碼塊或方法只會有一個線程執(zhí)行,以達(dá)到保證并發(fā)安全的效果,需要的朋友可以參考下
    2023-05-05

最新評論