Java對象轉(zhuǎn)JSON三種常用的方法
前言
在Java編程中,我們經(jīng)常需要將Java對象轉(zhuǎn)換為JSON格式,以便于數(shù)據(jù)的傳輸和存儲。本文將介紹三種常用的方法來實現(xiàn)Java對象到JSON的轉(zhuǎn)換,分別是使用org.json.JSONObject,Google Gson和Jackson。
一、使用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都提供了強大的功能和靈活的配置選項,使得處理JSON數(shù)據(jù)變得簡單而高效。
附:java對象轉(zhuǎn)json,數(shù)字精確出現(xiàn)丟失問題
這兩個問題都不是json工具包(比如Gson)的問題,而是由于js存儲大數(shù)字丟失精度引起。
1、精度丟失例子:當js表達整數(shù)時,最多表達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)文章
Java 的雙重分發(fā)與 Visitor 模式實例詳解
這篇文章主要介紹了Java 的雙重分發(fā)與 Visitor 模式實例詳解,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
SpringBoot中快速實現(xiàn)郵箱發(fā)送代碼解析
這篇文章主要介紹了SpringBoot中快速實現(xiàn)郵箱發(fā)送代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
JavaWeb實現(xiàn)用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)
這篇文章主要基于Servlet+JSP+JavaBean開發(fā)模式實現(xiàn)JavaWeb用戶登錄注冊功能實例代碼,非常實用,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看看吧2016-05-05
SpringBoot集成企業(yè)微信開發(fā)的實現(xiàn)
本文將詳細介紹如何使用?Spring?Boot?集成企業(yè)微信開發(fā),通過企業(yè)微信?API?可以實現(xiàn)企業(yè)內(nèi)部的一些自動化業(yè)務(wù)流程,提高工作效率,感興趣的可以了解一下2023-07-07
Java應(yīng)用程序開發(fā)學(xué)習(xí)之static關(guān)鍵字應(yīng)用
今天小編就為大家分享一篇關(guān)于Java應(yīng)用程序開發(fā)學(xué)習(xí)之static關(guān)鍵字應(yīng)用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
使用JPA中@Query 注解實現(xiàn)update 操作方法(必看)
下面小編就為大家?guī)硪黄褂肑PA中@Query 注解實現(xiàn)update 操作方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略
這篇文章主要介紹了淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05

