一開始的時(shí)候,使用Jackson的ObjectMapper來轉(zhuǎn),每個(gè)JSON對象都要建模,如果那個(gè)JSON嵌套了4層,就得寫4個(gè)Java Class,而且一個(gè)list里面還可以放不同類型的對象,要是哪天需求一改,就得從一堆class里面挖寶(雷)。使用Java的強(qiáng)類型對靈活的JSON對象建模,在現(xiàn)在多變的業(yè)務(wù)環(huán)境下,真的沒有什么優(yōu)勢。
?
后來看到JDK里面有這么一個(gè)寫法:
創(chuàng)新互聯(lián)從2013年成立,先為橫山等服務(wù)建站,橫山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為橫山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(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),好寫好看??墒沁@種寫法,要用到j(luò)son-lib,json-lib不建議用在1.7或以上的Java,原因在此。
?
于是基于fastjson,自己寫了一個(gè)這樣的builder,當(dāng)作語法糖。
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();
做是做出來了,但還不是我最終想要的東西,我最想要的是類似JavaScript的效果。
{
"name": ${name},
"friends": [
{
"name": ${friend}
}
]
}
目前的Java還做不出來,期待Java語法的改進(jìn)。
當(dāng)前標(biāo)題:JavaObjecttoJSON
文章分享:http://muchs.cn/article40/jeheho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、小程序開發(fā)、商城網(wǎng)站、關(guān)鍵詞優(yōu)化、用戶體驗(yàn)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)