检索数据并将 JSON 条记录保存在数组中
Retrieve Data and save JSON records in an array
我需要在 tableview
中显示 address
。我怎样才能打破 JSON
并将地址保存在 NSArray
.
中
JSON 是:
{
"Rank": 54,
"data": [
{
"number": 1,
"address": "x mandt "
},
{
"number": 2,
"address": "x mandt2 "
}
]
}
代码是:
NSDictionary *dic = (NSDictionary *) responseObject;
NSDictionary * dat = [dic objectForKey:@"data"];
NSArray *add =[dat objectForKey:@"address"];
上面的代码,没有检索并保存add
数组中的所有地址。我该如何解决这个问题?
应该是:
NSArray *add =[dic objectForKey:@"data"];
然后如果你想要地址(我正在考虑第 0 个索引中的地址),那么这样做:
NSString *str = [[add objectAtIndex: 0] objectForKey:@"address"];
编辑:
声明一个 class 变量,例如:
@interface YourClassName (){
NSMutableArray *dataSource;
}
像这样填充数据源:
dataSource =[dic objectForKey:@"data"];
然后在您的 cellForRowAtIndexPath
方法中执行此操作:
cell.textLabel.text = [[dataSource objectAtIndex:indexPath.row] objectForKey:@"address"];
我认为您的表格视图中只有一个部分。希望这有帮助.. :)
假设这是你的序列化数据
NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];
// here I start your work
NSArray *infoDict=[jsonArray objectForKey:@"data"];
for (NSDictionary *tmp in infoDict)
{
NSMutableDictionary *temparr=[[NSMutableDictionary alloc]init];
[temparr setValue:[tmp objectForKey:@"number"] forKey:@"number"];
[temparr setValue:[tmp objectForKey:@"address"] forKey:@"address"];
[_tdataSource addObject:temparr];
}
[yourtableviewNAme reloadData];
这里我添加了 Tableview DataSource
和 delegate
方法
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section
{
return [self.tdataSource count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"resultCell";
yourtableviewCellName *cell = [self.yourtableName dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[yourtableviewCellName alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}
cell.textLabel.text=[[self.tdataSource objectAtIndex:indexPath.row]objectForKey:@"address"];
return cell;
}
我认为你最好只使用文字语法来检索它。你检索的方式就好了。您可能只是添加了一些内省:
NSDictionary *responseDict = (NSDictionary *) responseObject;
if (responseDict.count) {
NSArray *dataArray = responseDict[@"data"];
if (dataArray.count) {
// do whatever you want
}
}
你在检索关键字 data 时犯了一个错误,之后你将得到一个数组而不是 NSDictionary。
我需要在 tableview
中显示 address
。我怎样才能打破 JSON
并将地址保存在 NSArray
.
JSON 是:
{
"Rank": 54,
"data": [
{
"number": 1,
"address": "x mandt "
},
{
"number": 2,
"address": "x mandt2 "
}
]
}
代码是:
NSDictionary *dic = (NSDictionary *) responseObject;
NSDictionary * dat = [dic objectForKey:@"data"];
NSArray *add =[dat objectForKey:@"address"];
上面的代码,没有检索并保存add
数组中的所有地址。我该如何解决这个问题?
应该是:
NSArray *add =[dic objectForKey:@"data"];
然后如果你想要地址(我正在考虑第 0 个索引中的地址),那么这样做:
NSString *str = [[add objectAtIndex: 0] objectForKey:@"address"];
编辑:
声明一个 class 变量,例如:
@interface YourClassName (){
NSMutableArray *dataSource;
}
像这样填充数据源:
dataSource =[dic objectForKey:@"data"];
然后在您的 cellForRowAtIndexPath
方法中执行此操作:
cell.textLabel.text = [[dataSource objectAtIndex:indexPath.row] objectForKey:@"address"];
我认为您的表格视图中只有一个部分。希望这有帮助.. :)
假设这是你的序列化数据
NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];
// here I start your work
NSArray *infoDict=[jsonArray objectForKey:@"data"];
for (NSDictionary *tmp in infoDict)
{
NSMutableDictionary *temparr=[[NSMutableDictionary alloc]init];
[temparr setValue:[tmp objectForKey:@"number"] forKey:@"number"];
[temparr setValue:[tmp objectForKey:@"address"] forKey:@"address"];
[_tdataSource addObject:temparr];
}
[yourtableviewNAme reloadData];
这里我添加了 Tableview DataSource
和 delegate
方法
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section
{
return [self.tdataSource count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"resultCell";
yourtableviewCellName *cell = [self.yourtableName dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[yourtableviewCellName alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}
cell.textLabel.text=[[self.tdataSource objectAtIndex:indexPath.row]objectForKey:@"address"];
return cell;
}
我认为你最好只使用文字语法来检索它。你检索的方式就好了。您可能只是添加了一些内省:
NSDictionary *responseDict = (NSDictionary *) responseObject;
if (responseDict.count) {
NSArray *dataArray = responseDict[@"data"];
if (dataArray.count) {
// do whatever you want
}
}
你在检索关键字 data 时犯了一个错误,之后你将得到一个数组而不是 NSDictionary。