我想将特定格式的Params发送到服务器。
这是格式:
{
"institute": {
"name": $scope.formData.institute_name,
"state": $scope.formData.state,
"city": $scope.formData.city,
"pin_code": $scope.formData.pincode,
"nature": $scope.formData.nature,
},
"user": {
"role": $scope.formData.role,
"user_id": $scope.user_id
}
};
我可以以这种格式发送,但是问题是institute
中的一个值,而user
却是String。而且我希望其中的价值也成为关键和价值。
所以我需要返回类似Map<String,Map<String,String>>
这样的参数
我尝试了此操作,但没有成功
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> instituteParams = new HashMap<>();
instituteParams.put("name", institute);
instituteParams.put("state", state);
instituteParams.put("city", city);
instituteParams.put("pin_code", pincode);
instituteParams.put("nature", nature);
JSONObject objectInstitute = new JSONObject(instituteParams);
Map<String, String> userParams = new HashMap<>();
userParams.put("role", role);
userParams.put("user_id", userid);
JSONObject objectUser = new JSONObject(userParams);
Map<String, String> params = new HashMap<>();
params.put("institute", objectInstitute.toString());
params.put("user", objectUser.toString());
return params;
}
答案 0 :(得分:0)
@Ajay有很多方法可以做到这一点。我们可以使用gson库或Map(您遵循的方法)从自定义用户Object进行解析,也可以直接创建JSONObject。
我已经创建了该方法的2个版本,尽管如果您的结果会胜于ver2,它似乎是最好的;不够繁琐且也非常具有描述性。
private JSONObject getParamsVer1() throws JSONException {
Map<String, String> instituteParams = new HashMap<>();
instituteParams.put("name", "");
instituteParams.put("state", "");
instituteParams.put("city", "");
instituteParams.put("pin_code", "");
instituteParams.put("nature", "");
JSONObject objectInstitute = new JSONObject(instituteParams);
Map<String, String> userParams = new HashMap<>();
userParams.put("role", "");
userParams.put("user_id", "");
JSONObject objectUser = new JSONObject(userParams);
Map<String, JSONObject> params = new HashMap<>();
params.put("institute", objectInstitute);
params.put("user", objectUser);
return new JSONObject(params);
}
private JSONObject getParamsVer2() throws JSONException {
JSONObject jsonObject = new JSONObject() {
{
put("institute", new JSONObject(){
{
put("name", "");
put("state", "");
put("city", "");
put("pin_code", "");
put("nature", "");
}
});
put("user", new JSONObject(){
{
put("role", "");
put("user_id", "");
}
});
}
};
return jsonObject;
}
尝试找出您在方法ver1上的错误。但是我还是要说ver2最适合这种情况,并且是非常整洁的分层方法。