如何在iphone中分离JSON响应

时间:2013-08-29 06:58:55

标签: iphone ios json

我有一个应用程序,我有这样的json响应。 {"success":"true","message":"You have logged in","pserial":"1"},我与":"分开。 我收到的数据如pSerial:"1"},但我只想要1值。

NSURL *url = [NSURL URLWithString:strUrl];
NSData *respData = [NSData dataWithContentsOfURL:url];
NSString *strResp = [[NSString alloc]initWithData:respData encoding:NSUTF8StringEncoding];
NSString *approvalString = [[strResp componentsSeparatedByString:@":"] objectAtIndex:3];
NSLog(@"pSerial:%@",approvalString);

5 个答案:

答案 0 :(得分:3)

例如:

SBJsonParser *jsonPar = [[SBJsonParser alloc] init];
NSError *error = nil;
NSArray *jsonObj = [jsonPar objectWithString:jsonString error:&error];


id jsonObj = [jsonPar objectWithString:jsonString error:&error];

if ([jsonObj isKindOfClass:[NSDictionary class]])
    // treat as a dictionary, or reassign to a dictionary ivar
else if ([jsonObj isKindOfClass:[NSArray class]])
    // treat as an array or reassign to an array ivar.

然后得到值:

NSMutableArrary *userMutArr = [NSMutableArray array];

for (NSDictionary *dict in jsonObj)
{
    User *userObj = [[[User alloc] init] autorelease];
    [userObj setFirstName:[dict objectForKey:@"firstName"]];
    [userObj setLastName:[dict objectForKey:@"lastName"]];
    [userObj setAge:[[dict objectForKey:@"age"] intValue]];
    [userObj setAddress:[dict objectForKey:@"address"]];
    [userObj setPhoneNumbers:[dict objectForKey:@"phoneNumber"]];

    [userMutArr addObject:userObj];
}
希望你能理解。并阅读一些文件。它会帮助你。

答案 1 :(得分:1)

看起来你需要JSON解析。在这里,你想要的是JSON解析,而不是从JSON Response中分离数据。 JSON是数据格式,其中数据以键值对格式化。您可以使用 “密钥” 获取任何对象的 “值”

前两行是正确的。

NSURL *url = [NSURL URLWithString:strUrl];
NSData *respData = [NSData dataWithContentsOfURL:url];

现在,您可以像这样解析JSON响应:

NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:respData options:kNilOptions error:&error];
NSString *pSerial = [json objectForKey:@"pserial"];

这会从您的回复中为您提供“pserial”的值。同样,您可以获取“成功”“消息”的值。您可以使用以下行检查它:

NSLog(@"pserial :: %@",pserial);

答案 2 :(得分:0)

您需要解析JSON响应字符串,您可以使用任何JSON解析器,如:

https://github.com/stig/json-framework/

在你的代码中执行:

NSString *strResp = [[NSString alloc]initWithData:respData encoding:NSUTF8StringEncoding];

NSDictionary *ResponseDictionary = [strResp JSONValue];

NSString * pSerial = (NSString*)[ResponseDictionary objectForKey:@"pserial"];

答案 3 :(得分:0)

不要分开“:”只需使用JSONValue,你的回答就像

 //     {"success":"true","message":"You have logged in","pserial":"1"} 

 //  with SBJsonParser parse your object like this

 NSDictionary *responseJson = [YOUR-OBJECT JSONValue];

注意:别忘了添加Json头文件

答案 4 :(得分:0)

使用任何OpenSource Json Parser

更好

这是一个堆栈帖子比较不同的Json Parser for iOS

enter image description here