原来一个Json接口请求可以这么写

来源:互联网 发布:好未来php面试题 编辑:程序博客网 时间:2024/04/30 06:49

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"}}}

相对于前面两种写法来说,这样的写法就非常的优雅了

记一次项目开发的重构经历

原创粉丝点击