ios开发 解析Json数组

当我们在服务器端执行如下代码(首先得添加Gson的jar才能使用Gson哦),服务器就会向客户端返回一个Json数组。

//创建一个Gson对象,用来将JavaBean的数组转化为Json对象
Gson gson = new Gson() ;
//传入查询结果的数组(JavaBean类型的数组,自行创建),得到Json数组的字符串
String strGson = gson.toJson(labTimeList) ;
System.out.println(strGson);
		
//设置响应的类型为Json和字符编码格式为utf-8
response.setContentType("application/json;charset=utf-8");
response.setCharacterEncoding("UTF-8");
		
//向客户端发回Json响应
PrintWriter out = null ;
out = response.getWriter() ;
out.write(strGson);
out.close();

返回的Josn数组结果如下:

[{"attendanceId":33,"studentId":"123","startTime":"Jul 10, 2017 1:33:24 PM","endTime":"Dec 13, 2014 12:00:00 AM"},{"attendanceId":34,"studentId":"123","startTime":"Jul 10, 2017 1:34:02 PM","endTime":"Dec 13, 2014 12:00:00 AM"},{"attendanceId":35,"studentId":"123","startTime":"Jul 10, 2017 1:34:07 PM","endTime":"Jul 15, 2017 4:04:00 PM"}]


下面让我来展示一下在ios端如何解析该Json数组

由于篇幅问题,连接网络的代码我就不贴出来,直接上关键的部分。我们首先调用NSURLConnectionDataDelegate协议中的didReceiveData函数来获得响应

//接收服务器回传的数据,多次调用该函数,分批下载
-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //如果_receiveData为空,先初始化
    _receiveSatisticMonthData = [[NSMutableData alloc]init] ;
    //将每次得到的data加到_receiveData中
    [_receiveSatisticMonthData appendData:data] ;
}

然后调用connectionDidFinishLoading(网络连接结束后调用)来解析Json数组数据。
-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    //解析从服务器返回的Json数据
    id obj = [NSJSONSerialization JSONObjectWithData:_receiveSatisticMonthData options:0 error:nil] ;
    NSLog(@"%@",obj) ;
    
    //判断从服务器返回的数据是否为Json数组
    if([obj isKindOfClass:[NSArray class]])
    {
        //取得数组的第一个元素,是一个NSDictionary类型,然后根据key来取得相应的值
        NSString *attendacenId = [(NSDictionary*)[obj objectAtIndex:0] objectForKey:@"attendanceId"] ;
        NSString *studentId =[(NSDictionary*)[obj objectAtIndex:0] objectForKey:@"studentId"] ;
        NSString *startTime = [(NSDictionary*)[obj objectAtIndex:0] objectForKey:@"startTime"] ;
        NSString *endTime = [(NSDictionary*)[obj objectAtIndex:0] objectForKey:@"endTime"] ;
        NSLog(@"attendanceId:%@ studentId:%@ startTime:%@ endTime:%@",attendacenId,studentId,startTime,endTime) ;
    }
}
这样就可以在ios端解析Json数组啦!喜欢的朋友可以点个赞!你的赞就是我最大的动力哦!



你可能感兴趣的:(ios开发)