ios开发 解析Json数组

时间:2022-09-15 12:58:18

当我们在服务器端执行如下代码(首先得添加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数组啦!喜欢的朋友可以点个赞!你的赞就是我最大的动力哦!