我是android的新手。我正在使用简单的android项目,我正在使用asynctask。 onPostExecute方法我将对象结果作为参数。
{"success":1,"message":"Successfully registered the user","error_code":"200"}
当我将结果记录为字符串时,我得到的值
func changeToRoundLable(countLabel : UILabel){
let size:CGFloat = 55.0
countLabel.textColor = UIColor.white
countLabel.textAlignment = .center
countLabel.font = UIFont.systemFont(ofSize: 14.0)
countLabel.bounds = CGRect(x : 0.0,y : 0.0,width : size, height : size)
countLabel.layer.cornerRadius = size / 2
countLabel.layer.borderWidth = 3.0
countLabel.layer.masksToBounds = true
countLabel.layer.backgroundColor = UIColor.orange.cgColor
countLabel.layer.borderColor = UIColor.orange.cgColor
countLabel.translatesAutoresizingMaskIntoConstraints = false
}
但我想在消息中显示值,但我无法从对象result.can得到它。有人帮助我。我遇到了这个问题。
答案 0 :(得分:1)
解析JSON然后显示它:
try {
// Log.d(result.toString(), "resultvalue");
if (result != null) {
// ADDED CODE IS HERE:
JSONObject json = new JSONObject(result.toString());
String message = json.getString("message");
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"Unable to retrieve any data from server", Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// YOU MAY WANT TO MAKE A TOAST HERE AS WELL
e.printStackTrace();
}
要彻底,如果在解析消息时发生异常,您可能还想为用户做出某种错误干扰。
答案 1 :(得分:0)
您获得的响应是JSONObject。您应该使用该字符串创建一个JSONObject并获取所需的值。
JSONObject jsonObject = new JSONObject(result.toString());
jsonObject.getInt("success");
jsonObject.getString("message");
jsonObject.getInt("error_code");
PS:您不应该像这样使用Log.d。名称应该是第一个参数而不是第二个,值应该是第二个而不是第一个。
答案 2 :(得分:0)
您需要将结果解析为JsonObject
@Override
protected void onPostExecute(Object result) {
try {
Log.d(result.toString(),"resultvalue");
JSONObject jsonObject = new JSONObject(result.toString());
if (jsonObject.getInt("success")==1) {
Toast.makeText(getApplicationContext(),jsonObject.getString("message"), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Unable to retrieve any data from server", Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 3 :(得分:0)
最好总是使用通用的Exception处理程序,这样如果除了预期的异常之外还有任何其他异常,那么应用程序就不会突然停止,您可以向用户显示适当的用户友好消息,并根据您的应用程序要求在内部处理它(转储)在文件或数据库中用于在用户同意的情况下收集报告等。)
Log.d的第一个参数始终是TAG,可用于搜索logcat。我正在使用TAG,你可以使用任何适合你的东西,并且更容易搜索日志。
k.Cells(1, 4).Address()