我用microsoft asp.net身份创建一个错误处理系统,它使用enum作为json模型返回错误
public enum ErrorType
{
InvalidPassword,
TooShortPassword,
NullUserName,
InvalidUserName,
NullEmail,
InvalidEmail,
DuplicateUserName,
DuplicateEmail,
OtherIdentityErrors,
LoginIncorrectUserNameOrPass
}
我有一个类,用于创建
的错误列表public class ErrorModelJson
{
public ErrorModelJson()
{
ErrorTypes = new List<ErrorType>();
}
public List<ErrorType> ErrorTypes { get; set; }
}
当用户发送请求登录时如果用户名或密码不正确登录操作方法返回一个json有一个错误列表
private ApplicationUserManager UserManager => Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
[AllowAnonymous]
public async Task<IHttpActionResult> Login(UserLoginJson userLoginJson)
{
var user = await UserManager.FindByNameAsync(userLoginJson.UserNameOrEmail) ??
await UserManager.FindByEmailAsync(userLoginJson.UserNameOrEmail);
if (user == null || !await UserManager.CheckPasswordAsync(user, userLoginJson.Password))
{
var errorJson = new ErrorModelJson();
errorJson.ErrorTypes.Add(ErrorType.LoginIncorrectUserNameOrPass);
errorJson.ErrorTypes.Add(ErrorType.InvalidPassword);
return ResponseMessage(Request.CreateResponse(HttpStatusCode.BadRequest, errorJson));
}
IUserManagement userManagement = new UserManagement();
return Ok(userManagement.GetUserLoginReturnJson(user));
}
so in my android application i have an enum ErrorType and a class ErrorModelJson to parse received json to ErrorModelJson to create a list of error my android app recieve a json as below
{"ErrorTypes":[9]}
并且我会通过gson和volley将这个json转换为ErrorModelJson并使用这些代码但我得到的模型为null你可以帮助我吗?
@Override
protected VolleyError parseNetworkError(VolleyError volleyError){
NetworkResponse response = volleyError.networkResponse;
switch (response.statusCode)
{
case 400:
String data=new String(volleyError.networkResponse.data);
Gson gson = new Gson();
ErrorModelJson errorModelJson1 = gson.fromJson(data,ErrorModelJson.class);
errorModelListener.onError(errorModelJson1);
break;
}
}
答案 0 :(得分:0)
我没有深入挖掘代码,但我建议将json数组转换为字符串,然后将其解析为数组对象。