首頁 > 軟體

java鏈式建立json物件的實現

2022-02-11 13:00:03

我們主要介紹一下:java中如何通過最簡單的方式實現鏈式建立json物件,解決建立json程式碼臃腫的問題。

1、假設我們要建立一個json物件格式如下:

{
    "code": 0,
    "msg": "SUCCESS"
}

2、往常建立JSON語法:

java中傳統的建立json一般採用如下形式,先來看一個例子:

JSONObject res = new JSONObject();
res.put("code",0);
res.put("msg","SUCCESS");

這個例子中,每往json中加入一個元素都需要寫一遍res.put,每行只能建立一個json的資料,這樣比較繁瑣,程式碼也很臃腫,是不是覺得很不科學。

如果你覺得這還能接受,那麼你不妨試試二級json,三級json,完整的寫下來,你的程式碼能有幾十行是毫不誇張的。

3、解決方案——鏈式建立JSON:

我們可以採用鏈式建立JSON的方法,例如下面例子:

JSONObject res1 = new YtJSONObject().put("code",0).put("msg","SUCCESS").getHome();

通過以上例子中,我們實現了鏈式建立JSON,每往JSON中加入一個元素,只需要在鏈式寫法(也稱鏈條語法)中寫.put接上新元素即可。

這樣我們就實現了鏈式建立JSON,好處是免去每次都寫res.put的煩惱,建立一個完整的JSON物件只需要一行程式碼即可,這樣程式碼就整潔清晰了很多。

以上例子中我們用到了一個類:YtJSONObject,這個類是將JSONObject類再次封裝的一個加強類,通過.put元素鏈條寫完後,最終採用.getHome獲取得到JSONObject類物件,從而實現JSON的鏈式寫法

如需獲取JSON字串,我們只需要使用JSONObject物件原有的方法,例如:

String str = new YtJSONObject().put("code",0).put("msg","SUCCESS").getHome().toString();

這裡的.getHome()方法就是真正獲取到了JSONObject類物件,同時也就支援了JSONObject類物件的一切方法,所以可以呼叫.toString()轉為json字串。

4、實現多級JSON

很多時候我們的json都不是一級的,還會有二級、三級、無數級,此時使用傳統的json宣告語法只會時程式碼越來越多,作用卻不大。

使用鏈式json如何實現呢,我們來看個例子:

JSONObject res2 = new YtJSONObject()
    .put("code",0)
    .put("msg","SUCCESS")
    .put("result",
        new YtJSONObject()
            .put("id",1)
            .put("url","a")
        )
    .getHome();

以上例子中我們實現了一個二級JSON,就是增加了一個result級別的json,直接在賦值的地方繼續new YtJSONObject物件,然後繼續向下使用鏈式寫法即可,如果你還需要三級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類支援鏈式語法,並不是自行建立了一種JSON類型別,因此使用時還需要在pom.xml中引入一下fastjson

到此這篇關於java鏈式建立json物件的文章就介紹到這了,更多相關java鏈式建立json物件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com