您的位置:首页 > Web前端 > JavaScript

原来一个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"}}}


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

记一次项目开发的重构经历
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java