如何使用java链式创建json对象

如何使用java链式创建json对象

这篇文章主要为大家展示了“如何使用java链式创建json对象”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用java链式创建json对象”这篇文章吧。

1、假设我们要创建一个json对象格式如下:

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

2、往常创建JSON语法:

java中传统的创建json一般采用如下形式,先来看一个例子:

如何使用java链式创建json对象

JSONObjectres=newJSONObject();res.put("code",0);res.put("msg","SUCCESS");

这个例子中,每往json中加入一个元素都需要写一遍res.put,每行只能创建一个json的数据,这样比较繁琐,代码也很臃肿,是不是觉得很不科学。

如果你觉得这还能接受,那么你不妨试试二级json,三级json,完整的写下来,你的代码能有几十行是毫不夸张的。

3、解决方案——链式创建JSON:

我们可以采用链式创建JSON的方法,例如下面例子:

JSONObjectres1=newYtJSONObject().put("code",0).put("msg","SUCCESS").getHome();

通过以上例子中,我们实现了链式创建JSON,每往JSON中加入一个元素,只需要在链式写法(也称链条语法)中写.put接上新元素即可。

这样我们就实现了链式创建JSON,好处是免去每次都写res.put的烦恼,创建一个完整的JSON对象只需要一行代码即可,这样代码就整洁清晰了很多。

以上例子中我们用到了一个类:YtJSONObject,这个类是将JSONObject类再次封装的一个加强类,通过.put元素链条写完后,最终采用.getHome获取得到JSONObject类对象,从而实现JSON的链式写法

如需获取JSON字符串,我们只需要使用JSONObject对象原有的方法,例如:

Stringstr=newYtJSONObject().put("code",0).put("msg","SUCCESS").getHome().toString();

这里的.getHome()方法就是真正获取到了JSONObject类对象,同时也就支持了JSONObject类对象的一切方法,所以可以调用.toString()转为json字符串。

4、实现多级JSON

很多时候我们的json都不是一级的,还会有二级、三级、无数级,此时使用传统的json声明语法只会时代码越来越多,作用却不大。

使用链式json如何实现呢,我们来看个例子:

JSONObjectres2=newYtJSONObject().put("code",0).put("msg","SUCCESS").put("result",newYtJSONObject().put("id",1).put("url","a")).getHome();

以上例子中我们实现了一个二级JSON,就是增加了一个result级别的json,直接在赋值的地方继续newYtJSONObject对象,然后继续向下使用链式写法即可,如果你还需要三级JSON甚至多级JSON也是同理。

为了让语法看起来更加清晰,我把链式写法格式化了一下,更容易看清楚,实际应用中不太长的JSON链式写法完全可以写在一行上。

5、YtJSONObject类源码

importcom.alibaba.fastjson.JSONObject;publicclassYtJSONObject{privateJSONObjecthome;publicYtJSONObject(){this.home=newJSONObject();}publicYtJSONObjectput(Stringkey,Objectvalue){home.put(key,value);returnthis;}publicJSONObjectgetHome(){returnhome;}}

该类只是增强了JSONObject类,使JSONObject类支持链式语法,并不是自行创建了一种JSON类类型,因此使用时还需要在pom.xml中引入一下fastjson

以上是“如何使用java链式创建json对象”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2022-02-11 22:43:57
收藏
分享
海报
0 条评论
39
上一篇:c++函数名指针和函数指针怎么定义 下一篇:Python如何调用同级目录
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码