在iOS应用程序中解析JSON对象
嗨,我是Ios的新手,在我的项目中,我正在集成web服务,好的,很好 在这里,当我向服务器发送正确的请求时,响应来自服务器,如下面的“我的第一个响应” 如果我们向服务器发送了错误的请求,则响应来自服务器,如下面的“我的第二个响应” 所以,我们不知道在发送请求后从服务器获得哪种类型的Json对象 这里我的主要要求是,若我们从服务器得到正确的响应(如下面的第一个响应),那个么我们就可以保存我们想要的所有元素 如果我们得到了错误的响应(如下面的第二个响应),那么我们如何找到和打印该消息,因为有时我们得到正确的响应,有时我们从服务器得到错误的响应,所以我们如何找到和保存该响应 请帮帮我 如果发送正确的请求,则响应:- 如果我们发送了错误的请求,则响应:- 我的代码:-在iOS应用程序中解析JSON对象,ios,objective-c,json,Ios,Objective C,Json,嗨,我是Ios的新手,在我的项目中,我正在集成web服务,好的,很好 在这里,当我向服务器发送正确的请求时,响应来自服务器,如下面的“我的第一个响应” 如果我们向服务器发送了错误的请求,则响应来自服务器,如下面的“我的第二个响应” 所以,我们不知道在发送请求后从服务器获得哪种类型的Json对象 这里我的主要要求是,若我们从服务器得到正确的响应(如下面的第一个响应),那个么我们就可以保存我们想要的所有元素 如果我们得到了错误的响应(如下面的第二个响应),那么我们如何找到和打印该消息,因为有时我们得
在您的情况下,您可以按如下方式使用:
NSDictionary *responseObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
if([responseObject objectForKey:@"error"] == nil)
{
//You are getting correct response
}
else{
// You are getting response with error
}
您可以检查响应是否有错误的密钥。否则,您可以在服务器端为所有响应(如statusCode)使用新变量。因此,如果您得到错误或成功,您的服务器端可以将其设置为statusCode。这是一个非常明确的方法 您可以使用UIAlertView显示错误消息
if([responseObject objectForKey:@"error"] == nil)
{
//You are getting correct response
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your Message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
else
{
// You are getting response with error
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Error Message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
我猜你还没有发布完整的responseObject(当发送正确的请求时)。假设您在响应正确时得到error=0键,则可以执行以下操作:
NSMutableDictionary *jsonDictionary= [NSMutableDictionary alloc]init]
jsonDictionary=responseObject;
if([jsonDictionary valueForKey:@"error"]==@"0"]
{
//do some stuff
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Invalid Request" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
您在日志中得到了正确的响应对象??在这两种情况下,您应该保持相同的响应结构。对于,右-错误代码=1,消息=成功,数据为,错误-错误代码=0,message=failure&data-NILyes我正在日志中,有时我们得到正确的响应,有时我们得到错误的响应,所以如果我从服务器得到错误的响应,我们如何找到错误消息您可以将解析的数据存储到NSDictionary而不是ID中,并且您可以检查此字典是否包含键“error”如果值为1,则可以确定响应不正确。是@D shah,但如果我得到正确的响应,我将从响应中打印“Name”对象如果我得到错误的响应,则显示异常,如键“Name”没有对象那么如何处理这种情况呢?Hi@Divyesh Savaliya JSONSerialization解析的东西并不意味着结果就是一个字典。它也可以是一个数组,对吗?您可以使用JSONSerialization作为字典。您不知道[NSJSONSerialization JSONObjectWithData:]返回什么类型的对象。因此,您必须检查类型并强制转换为已检查的类型
NSDictionary *responseObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
if([responseObject objectForKey:@"error"] == nil)
{
//You are getting correct response
}
else{
// You are getting response with error
}
if([responseObject objectForKey:@"error"] == nil)
{
//You are getting correct response
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your Message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
else
{
// You are getting response with error
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Error Message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
NSMutableDictionary *jsonDictionary= [NSMutableDictionary alloc]init]
jsonDictionary=responseObject;
if([jsonDictionary valueForKey:@"error"]==@"0"]
{
//do some stuff
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Invalid Request" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}