java鏈式創(chuàng)建json對象的實現(xiàn)
我們主要介紹一下:java中如何通過最簡單的方式實現(xiàn)鏈式創(chuàng)建json對象,解決創(chuàng)建json代碼臃腫的問題。
1、假設我們要創(chuàng)建一個json對象格式如下:
{
"code": 0,
"msg": "SUCCESS"
}2、往常創(chuàng)建JSON語法:
java中傳統(tǒng)的創(chuàng)建json一般采用如下形式,先來看一個例子:
JSONObject res = new JSONObject();
res.put("code",0);
res.put("msg","SUCCESS");這個例子中,每往json中加入一個元素都需要寫一遍res.put,每行只能創(chuàng)建一個json的數(shù)據(jù),這樣比較繁瑣,代碼也很臃腫,是不是覺得很不科學。
如果你覺得這還能接受,那么你不妨試試二級json,三級json,完整的寫下來,你的代碼能有幾十行是毫不夸張的。
3、解決方案——鏈式創(chuàng)建JSON:
我們可以采用鏈式創(chuàng)建JSON的方法,例如下面例子:
JSONObject res1 = new YtJSONObject().put("code",0).put("msg","SUCCESS").getHome();通過以上例子中,我們實現(xiàn)了鏈式創(chuàng)建JSON,每往JSON中加入一個元素,只需要在鏈式寫法(也稱鏈條語法)中寫.put接上新元素即可。
這樣我們就實現(xiàn)了鏈式創(chuàng)建JSON,好處是免去每次都寫res.put的煩惱,創(chuàng)建一個完整的JSON對象只需要一行代碼即可,這樣代碼就整潔清晰了很多。
以上例子中我們用到了一個類:YtJSONObject,這個類是將JSONObject類再次封裝的一個加強類,通過.put元素鏈條寫完后,最終采用.getHome獲取得到JSONObject類對象,從而實現(xiàn)JSON的鏈式寫法。
如需獲取JSON字符串,我們只需要使用JSONObject對象原有的方法,例如:
String str = new YtJSONObject().put("code",0).put("msg","SUCCESS").getHome().toString();這里的.getHome()方法就是真正獲取到了JSONObject類對象,同時也就支持了JSONObject類對象的一切方法,所以可以調(diào)用.toString()轉(zhuǎn)為json字符串。
4、實現(xiàn)多級JSON
很多時候我們的json都不是一級的,還會有二級、三級、無數(shù)級,此時使用傳統(tǒng)的json聲明語法只會時代碼越來越多,作用卻不大。
使用鏈式json如何實現(xiàn)呢,我們來看個例子:
JSONObject res2 = new YtJSONObject()
.put("code",0)
.put("msg","SUCCESS")
.put("result",
new YtJSONObject()
.put("id",1)
.put("url","a")
)
.getHome();以上例子中我們實現(xiàn)了一個二級JSON,就是增加了一個result級別的json,直接在賦值的地方繼續(xù)new YtJSONObject對象,然后繼續(xù)向下使用鏈式寫法即可,如果你還需要三級JSON甚至多級JSON也是同理。
為了讓語法看起來更加清晰,我把鏈式寫法格式化了一下,更容易看清楚,實際應用中不太長的JSON鏈式寫法完全可以寫在一行上。
5、YtJSONObject類源碼
import com.alibaba.fastjson.JSONObject;
public class YtJSONObject {
private JSONObject home;
public YtJSONObject() {
this.home = new JSONObject();
}
public YtJSONObject put(String key, Object value) {
home.put(key, value);
return this;
}
public JSONObject getHome() {
return home;
}
}該類只是增強了JSONObject類,使JSONObject類支持鏈式語法,并不是自行創(chuàng)建了一種JSON類類型,因此使用時還需要在pom.xml中引入一下fastjson
到此這篇關(guān)于java鏈式創(chuàng)建json對象的文章就介紹到這了,更多相關(guān)java鏈式創(chuàng)建json對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot單元測試之數(shù)據(jù)隔離詳解
我們在寫單元測試時,有一個比較重要的要求是可以重復運行, 那么這樣就會有一個比較麻煩的問題:數(shù)據(jù)污染,所以本文為大家整理了兩個數(shù)據(jù)隔離的方式,希望對大家有所幫助2023-08-08
Java中Lombok @Value注解導致的variable not been initialized問題
本文主要介紹了Java中Lombok @Value注解導致的variable not been initialized問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
解決Spring JPA 使用@transaction注解時產(chǎn)生CGLIB代理沖突問題
這篇文章主要介紹了解決Spring JPA 使用@transaction注解時產(chǎn)生CGLIB代理沖突問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08

