java链式创建json对象
我们主要介绍一下: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 链式编程
这里来做一个Java 链式编程的例子,基本就是每次返回一个对象本身,这样就能够去调用对象的方法和属性. package com.sun; public class Demo05 { /** * @pa ...
- js如何创建JSON对象
js如何创建JSON对象 一.总结 一句话总结:直接创建js数组和js对象即可,然后JSON.stringify就可以获取json字符串,js中的一切都是对象,而且js中的对象都是json对象 js ...
- Java 链式写法
Java链式写法,子类继承父类的属性,也可以返回子类的对象,只是需要重写基类的Set方法 public class MyLS { public static void main(String[] ar ...
- java根据url获取json对象
package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; ...
- 简单使用JSON,JavaScript中创建 JSON 对象(一)
JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...
- java 如何对由json对象构成的数组形式的字符串进行遍历?
1.情景展示 现在已知字符串为: [{"name":"微微笑","img":"http://zos.alipayobjects ...
- javascript学习-创建json对象数据,遍历
之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据. 这里讲下直接在JS里创建JSON数据,然后遍历使用~ 创建代码例如以下:(创建的是JSON对象) var YearSelect ...
- 创建json对象
jQuery创建json对象 方法二: <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- Java链式写法
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11613067.html Java 链式写法:详细看代码 package chain; /** ...
随机推荐
- MySQL数据库常用命令汇总
-- 查看mysql的当前登陆用户 select user(); -- 列出数据库 show databases; -- 使用数据库 use mysql; describe mysql.user; s ...
- 黑客帝国纯js版
明天就回家过年了,今天没什么心思上班,看了下博客,发现一个黑客帝国额js版本,地址:https://blog.csdn.net/zhongyi_yang/article/details/5384180 ...
- 使用 arguments 对象
arguments 对象表示参数集合,它是一个伪类数组,拥有与数组相似的结构,可以通过数组下标的形式访问函数实参值,但是没有基础 Array 的原型方法. //函数没有定义形参,但是在函数体内通过 a ...
- RootersCTF2019 I ♥ Flask
最近也是一直在做ssti方面的题目,我发现了两款比较好用的工具,一个是arjun(用来探测参数),另一个是Tplmap(用来探测ssti漏洞),我们这里以一道题目为例来演示一下 题目 我们拿到题目 分 ...
- java关于for循环的效率优化
我们知道在实现一个功能的时候是可以使用不同的代码来实现的,那么相应的不同实现方法的性能肯定也是有差别的,所以我们在写一些对性能很敏感的模块的时候,对代码进行优化是很必要的,所以我们说一下for循环(w ...
- XRecyclerView:实现下拉刷新、滚动到底部加载更多以及添加header功能的RecyclerView
介绍: 一个实现了下拉刷新,滚动到底部加载更多以及添加header功能的的RecyclerView.使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊的adater. ...
- winform设置所有窗体统一图标
class WindowHookerManager { static WindowHooker hooker = new WindowHooker(); public static void SetA ...
- 【记录一个问题】thinkpad x1笔记本,安装ubuntu 16后,拔掉U盘,总是启动到windows,无法启动到ubuntu
如题 昨天使用ubuntu 18没有这个问题 ============================= 12:38 1.安装完成出现重启后,一定要拔掉U盘 2.BIOS里面的security boo ...
- 记录一个问题:macos High Sierra 10.13.6 内核内存泄漏,导致内存满而不得不重启
kernel_task进程占用内存10g以上,使用中突然提示内存不足,要求杀死工作进程,不得不强按电源键来关机重启. 升级之前,版本大约是macos High Sierra 10.13.4, 系统频繁 ...
- 数组的sort()排序
1.sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点,也就是你不传参进去的话,默认按字符串Unicode码点来排序,而不是按数字大小来排序 2.arr ...