在iOS上解析json数组

时间:2014-08-13 08:16:10

标签: ios objective-c json

我有以下JSON数据:

[{"id":"value","first_name":"value","last_name":"value"},
 {"id":"value","first_name":"value","last_name":"value"},
 {"id":"value","first_name":"","last_name":""}]

然后我实现了我的代码:

NSError *err;
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://abcd.com/index.php?r=WS/Employee"]];
NSData *dataFromUrl = [NSData dataWithContentsOfURL:url];
NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:dataFromUrl options: NSJSONReadingMutableContainers error:&err];

if (err)
    NSLog(@"JSONObjectWithData error: %@", err);

为此,我收到以下错误消息:

  

JSONObjectWithData错误:错误Domain = NSCocoaErrorDomain Code = 3840   "操作无法完成。 (可可误差3840。)" (JSON文本   没有从数组或对象和选项开始,不允许片段   set。)UserInfo = 0x9c900f0 {NSDebugDescription = JSON文本没有启动   使用数组或对象和选项来允许未设置片段。}

请帮助我获取这些数据。

4 个答案:

答案 0 :(得分:1)

我认为你应该在请求标题中添加更多内容。尝试将NSData转换为NSString并查看为您提供的内容

答案 1 :(得分:1)

尝试此代码....

NSURL * url =[NSURL URLWithString:getDataURL];
NSData * data=[NSData dataWithContentsOfURL:url];

json =[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

答案 2 :(得分:1)

我通过替换

中的PHP文件中的请求标头来解决这个问题
echo "<meta charset=\"utf-8\">";

 ob_start();
 header('Content-type: application/json');

答案 3 :(得分:0)

NSError *err;
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://abcd.com/index.php?r=WS/Employee"]];
NSData *dataFromUrl = [NSData dataWithContentsOfURL:url];
NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:dataFromUrl options:     NSJSONReadingMutableContainers error:&err];

if (err)
   NSLog(@"JSONObjectWithData error: %@", err);

只需改变你的行

NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:dataFromUrl options:     NSJSONReadingMutableContainers error:&err];

NSJSONSerialization *jsonData = [NSJSONSerialization JSONObjectWithData:dataFromUrl options:     NSJSONReadingMutableContainers error:&err];
NSMutableArray *array = [NSMutableArray arrayWithArray:(NSArray *)jsonData];
NSLog(@"Success:%@", array);