原来一个Json接口请求可以这么写
2017-07-28 11:47
447 查看
1.最糟糕的写法 version1.0
HashMap<String, String> level1 = new HashMap<String, String>(); level1.put("source", "source"); level1.put("code", "code"); level1.put("password", "password"); HashMap<String, String> level2 = new HashMap<String, String>(); level2.put("getBusinessLevelTokenReq", level1.toString()); HashMap<String, String> datas = new HashMap<String, String>(); datas.put("params", level2.toString()); System.out.println(datas);
{params={getBusinessLevelTokenReq={password=password, code=code, source=source}}}
缺点:
1.此方法比较依赖对方的解析能力
2.所有类型都当作String
3.硬编码太多
2.一般的写法 version2.0
HashMap<String, Object> level1 = new HashMap<String, Object>(); level1.put("source", "source"); level1.put("code", "code"); level1.put("password", "password"); HashMap<String, Object> level2 = new HashMap<String, Object>(); level2.put("getBusinessLevelTokenReq", level1); HashMap<String, String> datas = new HashMap<String, String>(); ObjectMapper om = new ObjectMapper(); String data = om.writeValueAsString(level2); datas.put("params", data); System.out.println(datas);
{params={"getBusinessLevelTokenReq":{"password":"password","code":"code","source":"source"}}}
这是一种标准的json串,所以理论上不存在解析问题
类型不是单一的String了
硬编码太多
3.比较完美的写法 version 3.0
TokenReqBean TokenReqBean=new TokenReqBean(); TokenReqBean.getBusinessLevelTokenReq req =TokenReqBean.new getBusinessLevelTokenReq(); req.setCode("code"); req.setPassword("password"); req.setSource("source"); HashMap<String, String> datas = new HashMap<String, String>(); ObjectMapper om = new ObjectMapper(); String data = om.writeValueAsString(req); datas.put("params", data); System.out.println(datas);
public class TokenReqBean { private Object getBusinessLevelTokenReq; public Object getGetBusinessLevelTokenReq() { return getBusinessLevelTokenReq; } public void setGetBusinessLevelTokenReq(Object getBusinessLevelTokenReq) { this.getBusinessLevelTokenReq = getBusinessLevelTokenReq; } public class getBusinessLevelTokenReq{ private String source; private String code; private String password; public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "getBusinessLevelTokenReq [source=" + source + ", code=" + code + ", password=" + password + "]"; } } @Override public String toString() { return "TokenReqBean [getBusinessLevelTokenReq=" + getBusinessLevelTokenReq + "]"; } }
{params={"getBusinessLevelTokenReq":{"password":"password","code":"code","source":"source"}}}
相对于前面两种写法来说,这样的写法就非常的优雅了
记一次项目开发的重构经历
相关文章推荐
- 一个好用的测试服务器接口的工具(post请求,xml,json等数据格式)
- 用javascript向一个网页连接接口发送请求,并接收该接口返回的json串
- 分享一个百度的接口地址可以用来测试json数据用
- JSON解析的成长史——原来还可以这么简单
- 原来这么简单就可以申请Blog了,害我还自己做了一个~
- JSON解析的成长史——原来还可以这么简单
- 将IRepository接口进行抽象,使它成为数据基类的一个对象,这样每个子类都可以有自己的最基础的CURD了
- 当一个表单中有多个按钮时,可以通过onclick()事件触发不同的action请求
- 自己动手写一个 iOS 网络请求库(NSURLSession 初探、封装接口、降低耦合、快速文件上传 )
- 各种常用的JSON接口,开动你的大脑你就可以做出各种应用,
- Loadrunner http JSON接口请求进行测试
- 一个可以解析复杂JSON字符串里面值的算法
- 3D贴图和运动效果原来用Vegas可以这么做!
- 心电图测量原来可以这么简单
- 动态安全下的防***原来可以这么简单!
- 原来JSON这么简单,哇哈哈
- 原来微信支付可以这么简单!手把手搭建支付demo
- 浅谈Java代码的 微信长链转短链接口使用 post 请求封装Json(实例)
- 两个控件原来可以绑定一个属性
- c#一个简单的实例告诉你,多继承还可以这么来