我知道我必须遗漏一些东西。我在错误时得到一个JSONObject。
{
"data": {
"status": "error",
"error": {
"email": ["Email already registered"]
}
}
}
JSON Key错误的名称与EditText相同。我需要能够
email.setError("Email already registered");
Class.forName()不适用于它......我如何在Android中执行此操作
该值位于Iterator key =“email”
中} else if (data.getString("status").equals("error")) {
Log.d(Constants.LOG, "No Account Found Sending to Register!");
JSONObject errors = data.getJSONObject("error");
for(Iterator<String> iter = errors.keys();iter.hasNext();) {
String key = iter.next();
Object value = errors.get(key);
Log.d(Constants.LOG,value.toString().replace("[","").replace("]","").replace("\"",""));
///Class<?> clasz = Class.forName(key);
}
Toast.makeText(getApplicationContext(), "Error:" + data.getString("error"), Toast.LENGTH_LONG).show();
}
答案 0 :(得分:1)
如果你有java 1.7或更高版本
,可能的方法是使用switch
大小写作为字段名称
for(Iterator<String> iter = errors.keys();iter.hasNext();) {
String key = iter.next();
Object value = errors.get(key);
Log.d(Constants.LOG,value.toString().replace("[","").replace("]","").replace("\"",""));
switch(key) {
case "email":
email.setError(value.toString());
break;
case "name":
name.setError(value.toString());
break;
}
}
或强>
如果您不想使用switch
案例,则可以使用Java Reflection API
来实现相同目的。