加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Object to JSON

发布时间:2020-12-15 05:24:11 所属栏目:Java 来源:网络整理
导读:一开始的时候,使用Jackson的ObjectMapper来转,每个JSON对象都要建模,如果那个JSON嵌套了4层,就得写4个Java Class,而且一个list里面还可以放不同类型的对象,要是哪天需求一改,就得从一堆class里面挖宝(雷)。 ? 后来看到JDK里面有这么一个写法: Json
一开始的时候,使用Jackson的ObjectMapper来转,每个JSON对象都要建模,如果那个JSON嵌套了4层,就得写4个Java Class,而且一个list里面还可以放不同类型的对象,要是哪天需求一改,就得从一堆class里面挖宝(雷)。
?
后来看到JDK里面有这么一个写法:

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();

看着就很爽,一眼就可以看清整个JSON的结构,好写好看。可是这种写法,要用到json-lib,json-lib不建议用在1.7或以上的Java,原因在此。
?
于是基于fastjson,自己写了一个这样的builder,当作语法糖。

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语法的改进。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读