JavaObjecttoJSON-創(chuàng)新互聯(lián)

一開(kāi)始的時(shí)候,使用Jackson的ObjectMapper來(lái)轉(zhuǎn),每個(gè)JSON對(duì)象都要建模,如果那個(gè)JSON嵌套了4層,就得寫(xiě)4個(gè)Java Class,而且一個(gè)list里面還可以放不同類型的對(duì)象,要是哪天需求一改,就得從一堆class里面挖寶(雷)。使用Java的強(qiáng)類型對(duì)靈活的JSON對(duì)象建模,在現(xiàn)在多變的業(yè)務(wù)環(huán)境下,真的沒(méi)有什么優(yōu)勢(shì)。
 
后來(lái)看到JDK里面有這么一個(gè)寫(xiě)法:

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)建站將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
JsonObject value = Json.createObjectBuilder()
     .add("firstName", "John")
     .add("lastName", "Smith")
     .add("age", 25)
     .add("address", Json.createObjectBuilder()
         .add("streetAddress", "21 2nd Street")
         .add("city", "New York")
         .add("state", "NY")
         .add("postalCode", "10021"))
     .add("phoneNumber", Json.createArrayBuilder()
         .add(Json.createObjectBuilder()
             .add("type", "home")
             .add("number", "212 555-1234"))
         .add(Json.createObjectBuilder()
             .add("type", "fax")
             .add("number", "646 555-4567")))
     .build();

看著就很爽,一眼就可以看清整個(gè)JSON的結(jié)構(gòu),好寫(xiě)好看??墒沁@種寫(xiě)法,要用到j(luò)son-lib,json-lib不建議用在1.7或以上的Java,原因在此。
 
于是基于fastjson,自己寫(xiě)了一個(gè)這樣的builder,當(dāng)作語(yǔ)法糖。

public class JsonObjectBuilder {
    private JSONObject obj = new JSONObject();
    public JsonObjectBuilder add(String key, Object value) {
        obj.put(key, value);
        return this;
    }
    public JSONObject build() {
        return obj;
    }
}
public class JsonArrayBuilder {
    private JSONArray array = new JSONArray();
    public JsonArrayBuilder add(Object item) {
        array.add(item);
        return this;
    }
    public JSONArray build() {
        return array;
    }
}
public class JsonBuilder {
    public static JsonObjectBuilder newObject() {
        return new JsonObjectBuilder();
    }
    public static JsonArrayBuilder newArray() {
        return new JsonArrayBuilder();
    }
}

使用示范:

JSONObject obj = JsonBuilder.newObject()
        .add("name", "Andy")
        .add("age", 28)
        .add("friends", JsonBuilder.newArray()
                .add(JsonBuilder.newObject()
                        .add("name", "Maggie")
                        .add("hobby", "hike")
                        .build())
                .add(JsonBuilder.newObject()
                        .add("name", "Tonny")
                        .add("city", "hongkong")
                        .build())
                .build())
        .build();

做是做出來(lái)了,但還不是我最終想要的東西,我最想要的是類似JavaScript的效果。

{
    "name": ${name},
    "friends": [
        {
            "name": ${friend}
        }
    ]
}

目前的Java還做不出來(lái),期待Java語(yǔ)法的改進(jìn)。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。

網(wǎng)站標(biāo)題:JavaObjecttoJSON-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://www.bm7419.com/article0/dpchoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站內(nèi)鏈、企業(yè)建站移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)