1.最糟糕的写法 version1.0
HashMap<String, String> level1 = new HashMap<String, String>();
("source", "source");
("code", "code");
("password", "password");
HashMap<String, String> level2 = new HashMap<String, String>();
("getBusinessLevelTokenReq", ());
HashMap<String, String> datas = new HashMap<String, String>();
("params", ());
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>();
("source", "source");
("code", "code");
("password", "password");
HashMap<String, Object> level2 = new HashMap<String, Object>();
("getBusinessLevelTokenReq", level1);
HashMap<String, String> datas = new HashMap<String, String>();
ObjectMapper om = new ObjectMapper();
String data = (level2);
("params", data);
(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"}}}
相对于前面两种写法来说,这样的写法就非常的优雅了
记一次项目开发的重构经历